Re: devel/arm-none-eabi-newlib headers inconsistencies (not functional) or am I misusing something?
- Reply: Mark Millard : "Re: devel/arm-none-eabi-newlib headers inconsistencies (not functional) or am I misusing something?"
- In reply to: José_Pérez : "Re: devel/arm-none-eabi-newlib headers inconsistencies (not functional) or am I misusing something?"
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Wed, 31 May 2023 18:11:07 UTC
On May 31, 2023, at 06:11, José Pérez <fbl@aoek.com> wrote: > Hi, Hello. > El 2023-05-27 15:21, Mark Millard escribió: >> On May 27, 2023, at 05:27, Mark Millard <marklmi@yahoo.com> wrote: >> It is unclear what you are doing for linking. > > Linking is another chapter that will be written after we can obtain objects. > > For the time being I am buinding a number of tests to see if the headers are functional or not, following your suggestion to add newlib ports header path first, and then arm-noabi-gcc header paths. I.e. > #include <...> search starts here: > /usr/local/arm-none-eabi/include > /usr/local/lib/gcc/arm-none-eabi/11.3.0/include > /usr/local/lib/gcc/arm-none-eabi/11.3.0/include-fixed > End of search list. > > In this scenario the next problem I am hitting is this one: > % arm-none-eabi-gcc test_stdatomic.c -c -g -DDEBUG -pipe -nostdinc -isystem /usr/local/arm-none-eabi/include -isystem /usr/local/lib/gcc/arm-none-eabi/11.3.0/include -isystem /usr/local/lib/gcc/arm-none-eabi/11.3.0/include-fixed -o test_stdatomic.o > In file included from test_stdatomic.c:2: > /usr/local/arm-none-eabi/include/stdatomic.h: In function 'atomic_flag_test_and_set_explicit': > /usr/local/arm-none-eabi/include/stdatomic.h:386:17: error: request for member '__val' in something not a structure or union > 386 | return (atomic_exchange_explicit(&__object->__flag, 1, __order)); > | ^~~~~~~~~~~~~~~~~~~~~~~~ > /usr/local/arm-none-eabi/include/stdatomic.h: In function 'atomic_flag_clear_explicit': > /usr/local/arm-none-eabi/include/stdatomic.h:393:9: error: request for member '__val' in something not a structure or union > 393 | atomic_store_explicit(&__object->__flag, 0, __order); > | ^~~~~~~~~~~~~~~~~~~~~ > > % cat test_stdatomic.c > #include <stdint.h> > #include <stdatomic.h> > > int main(int argc, char *argv[]) { > return 0; > } > > Any suggestion before I patch /usr/local/arm-none-eabi/include/stdatomic.h to make it work? > # arm-none-eabi-gcc -std=c99 test_stdatomic.c -c -g -DDEBUG -pipe -nostdinc -isystem /usr/local/arm-none-eabi/include -isystem /usr/local/lib/gcc/arm-none-eabi/11.3.0/include -isystem /usr/local/lib/gcc/arm-none-eabi/11.3.0/include-fixed -o test_stdatomic.o # So: with -std=c99 added your command works fine. But using -std=c11 (even implicitly) does not: # arm-none-eabi-gcc -std=c11 test_stdatomic.c -c -g -DDEBUG -pipe -nostdinc -isystem /usr/local/arm-none-eabi/include -isystem /usr/local/lib/gcc/arm-none-eabi/11.3.0/include -isystem /usr/local/lib/gcc/arm-none-eabi/11.3.0/include-fixed -o test_stdatomic.o In file included from test_stdatomic.c:2: /usr/local/arm-none-eabi/include/stdatomic.h: In function 'atomic_flag_test_and_set_explicit': /usr/local/arm-none-eabi/include/stdatomic.h:386:17: error: request for member '__val' in something not a structure or union 386 | return (atomic_exchange_explicit(&__object->__flag, 1, __order)); | ^~~~~~~~~~~~~~~~~~~~~~~~ /usr/local/arm-none-eabi/include/stdatomic.h: In function 'atomic_flag_clear_explicit': /usr/local/arm-none-eabi/include/stdatomic.h:393:9: error: request for member '__val' in something not a structure or union 393 | atomic_store_explicit(&__object->__flag, 0, __order); | ^~~~~~~~~~~~~~~~~~~~~ Note that c11 added builtin atomics. It appears that devel/arm-none-eabi-newlib does not yet correctly handle such contexts, at least for what arm-none-eabi-gcc provides relative to c11. Is use of -std=c99 inappropriate to your purpose? Do you need to use c11 (or later)? === Mark Millard marklmi at yahoo.com