Brian Cain <quic_bc...@quicinc.com> writes: > On 9/16/2024 8:12 AM, Alex Bennée wrote: >> Brian Cain <quic_bc...@quicinc.com> writes: >> >>> On 9/6/2024 9:39 PM, Brian Cain wrote: >>>> With newer clang builds (19.x), there's a warning for implicit function >>>> declarations and it rejects linux-test.c. >>>> >>>> glibc/musl's readdir64() declaration in dirent is guarded by >>>> _LARGEFILE64_SOURCE, so we'll define it to fix the warning. >>>> >>>> BUILD hexagon-linux-user guest-tests >>>> >>>> /local/mnt/workspace/upstream/toolchain_for_hexagon/qemu/tests/tcg/multiarch/linux/linux-test.c:189:14: >>>> error: call to undeclared function 'readdir64'; ISO C99 and later do not >>>> support implicit function declarations [-Wimplicit-function-declaration] >>>> 189 | de = readdir64(dir); >>>> | ^ >>>> >>>> Signed-off-by: Brian Cain <bc...@quicinc.com> >>>> --- >>>> tests/tcg/multiarch/linux/linux-test.c | 1 + >>>> 1 file changed, 1 insertion(+) >>>> >>>> diff --git a/tests/tcg/multiarch/linux/linux-test.c >>>> b/tests/tcg/multiarch/linux/linux-test.c >>>> index 64f57cb287..4e0e862ad9 100644 >>>> --- a/tests/tcg/multiarch/linux/linux-test.c >>>> +++ b/tests/tcg/multiarch/linux/linux-test.c >>>> @@ -17,6 +17,7 @@ >>>> * along with this program; if not, see <http://www.gnu.org/licenses/>. >>>> */ >>>> #define _GNU_SOURCE >>>> +#define _LARGEFILE64_SOURCE >>>> #include <stdarg.h> >>>> #include <stdlib.h> >>>> #include <stdio.h> >>> >>> Alex -- what do you think about this one? >> Actually scratch that, this is a 32 compat hack: >> >> 1f442da51e (tests/tcg/multiarch: fix 32bit linux-test on 64bit host) >> >> Is the __USE_LARGEFILE64 symbol in the hexagon headers? >> > musl does not define/use __USE_LARGEFILE64, no. If it's well defined > I could examine whether it makes sense to add this feature to musl, > though. How does __USE_LARGEFILE64 differ from _LARGEFILE64_SOURCE? > Is it more appropriate to define that here?
Digging into the GNU source _LARGEFILE* is the correct define, the __USE flags are internal. features.h says: _LARGEFILE_SOURCE Some more functions for correct standard I/O. _LARGEFILE64_SOURCE Additional functionality from LFS for large files. although looking at _LARGEFILE64_SOURCE should be defined by _GNU_SOURCE which is already set for linux-test.c According to the musl WHATSNEW: compatibility: - make _GNU_SOURCE imply _LARGEFILE64_SOURCE So is this a hexagon only thing? > > -Brian -- Alex Bennée Virtualisation Tech Lead @ Linaro