public inbox for newlib-cvs@sourceware.org
help / color / mirror / Atom feed
* [newlib-cygwin] Fix fr30 libgloss build
@ 2023-12-14 17:32 Jeff Law
  0 siblings, 0 replies; only message in thread
From: Jeff Law @ 2023-12-14 17:32 UTC (permalink / raw)
  To: newlib-cvs

https://sourceware.org/git/gitweb.cgi?p=newlib-cygwin.git;h=17a6aff334a20f63cb7f428a36dad0c8ebbdab5d

commit 17a6aff334a20f63cb7f428a36dad0c8ebbdab5d
Author: Jeff Law <jeffreyalaw@gmail.com>
Date:   Thu Dec 14 10:30:13 2023 -0700

    Fix fr30 libgloss build
    
    gcc-14 will default to c99 and as a result a fair amount of old code in newlib
    (particularly libgloss) is failing to build.  I don't offhand know how many
    patches will be necessary to fix the various failures. I'll just pick them off
    one by one from my tree.
    
    This particular patch works around the return-mismatch problem syscalls.c for
    fr30.
    
    That file is a bit odd in that most functions are declared as returning an
    integer, but the implementations look like:
    
    > int
    > _read (file, ptr, len)
    >      int    file;
    >      char * ptr;
    >      int    len;
    > {
    >   asm ("ldi:8 %0, r0" :: "i" (SYS_read) : "r0");
    >   asm ("int   #10");
    >
    >   return;
    > }
    
    Note the lack of a value on the "return" statement.  The assumption is that the
    interrupt handler implementing syscalls will put the return value into the
    proper register, so falling off the end of the C function or returning with no
    value works in the expected way.  It's not good code, but it probably works.
    
    Working from that assumption I decided to just use a pragma to disable the
    upgraded diagnostic from GCC -- essentially preserving existing behavior.
    
    This is the only fr30 specific issue that needs to be resolved and the only
    issue (so far) I've seen of this specific nature.

Diff:
---
 libgloss/fr30/syscalls.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/libgloss/fr30/syscalls.c b/libgloss/fr30/syscalls.c
index 2558556b6..36702b03d 100644
--- a/libgloss/fr30/syscalls.c
+++ b/libgloss/fr30/syscalls.c
@@ -5,6 +5,8 @@
 #include <sys/stat.h>
 #include "../syscall.h"
 
+#pragma GCC diagnostic ignored "-Wreturn-mismatch"
+
 int
 _read (file, ptr, len)
      int    file;

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2023-12-14 17:32 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-12-14 17:32 [newlib-cygwin] Fix fr30 libgloss build Jeff Law

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).