Re: [PATCH] libgloss: rs6000: Add missing function prototypes

Chris Packham <[email protected]>
Newsgroups gmane.comp.lib.newlib
Message-ID <CAFOYHZCYGmtLsi3UFvNN_v5-ou5YKfgi75WjWEovja7nDoAcMA@mail.gmail.com>
Ping?

On Thu, 24 Apr 2025, 8:27 pm Chris Packham, <[email protected]> wrote:

> With recent GCC changes that have elevated some warnings to error by
> default the rs6000 sim code errors out with:
>
>   libgloss/rs6000/sim-inbyte.c:22:7: error: implicit declaration of
> function 'read' [-Wimplicit-function-declaration]
>   libgloss/rs6000/sim-sbrk.c:26:7: error: implicit declaration of function
> 'brk'; did you mean 'sbrk'?  [-Wimplicit-function-declaration]
>   libgloss/rs6000/sim-abort.c:19:3: error: implicit declaration of
> function 'write' [-Wimplicit-function-declaration]
>   libgloss/rs6000/sim-abort.c:20:3: error: implicit declaration of
> function 'exit' [-Wimplicit-function-declaration]
>   libgloss/rs6000/sim-print.c:29:3: error: implicit declaration of
> function 'write' [-Wimplicit-function-declaration]
>   libgloss/rs6000/mvme-print.c:34:11: error: implicit declaration of
> function '__pcrlf' [-Wimplicit-function-declaration]
>   libgloss/rs6000/mvme-print.c:44:19: error: implicit declaration of
> function '__outln' [-Wimplicit-function-declaration]
>   libgloss/rs6000/mvme-print.c:53:15: error: implicit declaration of
> function '__outstr' [-Wimplicit-function-declaration]
>   libgloss/rs6000/mbx-print.c:29:3: error: implicit declaration of
> function 'write' [-Wimplicit-function-declaration]
>
> Add extern declarations to avoid the errors.
> ---
> We've been seeing some failures in ct-ng builds due to some old warnings
> that recent versions of GCC treat as errors by default. The odd thing is
> that we attempt to demote these to warnings by setting the relevant
> CFLAGS (which usually works) but somehow when we build with `ct-ng V=0
> build` the flags get lost (not sure if that's a ct-ng bug or a newlib
> problem). Regardless these errors can be avoided by adding the relevant
> declarations.
>
>  libgloss/rs6000/mbx-print.c  | 2 ++
>  libgloss/rs6000/mvme-print.c | 3 +++
>  libgloss/rs6000/sim-abort.c  | 3 +++
>  libgloss/rs6000/sim-inbyte.c | 1 +
>  libgloss/rs6000/sim-print.c  | 2 ++
>  libgloss/rs6000/sim-sbrk.c   | 1 +
>  6 files changed, 12 insertions(+)
>
> diff --git a/libgloss/rs6000/mbx-print.c b/libgloss/rs6000/mbx-print.c
> index 64472ee68..591ca2d3e 100644
> --- a/libgloss/rs6000/mbx-print.c
> +++ b/libgloss/rs6000/mbx-print.c
> @@ -13,6 +13,8 @@
>   * they apply.
>   */
>
> +extern int write(int fd, const void *buf, unsigned int count);
> +
>  /*
>   * print -- do a raw print of a string
>   */
> diff --git a/libgloss/rs6000/mvme-print.c b/libgloss/rs6000/mvme-print.c
> index 8d195424e..d8f4c50d8 100644
> --- a/libgloss/rs6000/mvme-print.c
> +++ b/libgloss/rs6000/mvme-print.c
> @@ -12,6 +12,9 @@
>   * the new terms are clearly indicated on the first page of each file
> where
>   * they apply.
>   */
> +extern void __pcrlf(void);
> +extern void __outln(char *, char *);
> +extern void __outstr(char *, char *);
>
>  /*
>   * write -- write some bytes to the output device.
> diff --git a/libgloss/rs6000/sim-abort.c b/libgloss/rs6000/sim-abort.c
> index e1b59cf19..931f886ed 100644
> --- a/libgloss/rs6000/sim-abort.c
> +++ b/libgloss/rs6000/sim-abort.c
> @@ -14,6 +14,9 @@
>   * they apply.
>   */
>
> +extern int write(int fd, const void *buf, unsigned int count);
> +extern void exit(int status);
> +
>  void abort(void)
>  {
>    write (2, "Abort called.\n", sizeof("Abort called.\n")-1);
> diff --git a/libgloss/rs6000/sim-inbyte.c b/libgloss/rs6000/sim-inbyte.c
> index 787b68976..fe1ac2a8b 100644
> --- a/libgloss/rs6000/sim-inbyte.c
> +++ b/libgloss/rs6000/sim-inbyte.c
> @@ -13,6 +13,7 @@
>   * the new terms are clearly indicated on the first page of each file
> where
>   * they apply.
>   */
> +extern int read(int fd, void *buf, unsigned int count);
>
>  int
>  inbyte ()
> diff --git a/libgloss/rs6000/sim-print.c b/libgloss/rs6000/sim-print.c
> index c0b9adced..49596aff6 100644
> --- a/libgloss/rs6000/sim-print.c
> +++ b/libgloss/rs6000/sim-print.c
> @@ -13,6 +13,8 @@
>   * they apply.
>   */
>
> +extern int write(int fd, const void *buf, unsigned int count);
> +
>  /*
>   * print -- do a raw print of a string
>   */
> diff --git a/libgloss/rs6000/sim-sbrk.c b/libgloss/rs6000/sim-sbrk.c
> index 5c8bd6522..0bbfe334b 100644
> --- a/libgloss/rs6000/sim-sbrk.c
> +++ b/libgloss/rs6000/sim-sbrk.c
> @@ -13,6 +13,7 @@
>   * the new terms are clearly indicated on the first page of each file
> where
>   * they apply.
>   */
> +extern int brk(void *addr);
>
>  extern char _end[];
>  static char *curbrk = _end;
> --
> 2.49.0
>
>
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.