Message ID | 20210617115104.1359598-3-adhemerval.zanella@linaro.org |
---|---|
State | New |
Headers | show |
Series | More y2038 fixes | expand |
On Jun 17 2021, Adhemerval Zanella via Libc-alpha wrote: > diff --git a/Makeconfig b/Makeconfig > index 6482a43025..de30ba3fa6 100644 > --- a/Makeconfig > +++ b/Makeconfig > @@ -851,6 +851,10 @@ endif > # -fno-math-errno. > +extra-math-flags = $(if $(filter libm,$(in-module)),-fno-math-errno,-fmath-errno) > > +# Use 64 bit time_t support for installed programs > ++extra-time-flags = $(if $(filter nonlib nscd lddlibc4 ldconfig locale_programs iconvprogs,\ I'd suggest to put the list of module names in a variable, to make it easier to shorten the line. > diff --git a/Makerules b/Makerules > index 12f1a5cb50..770a573134 100644 > --- a/Makerules > +++ b/Makerules > @@ -1313,14 +1313,22 @@ lib := testsuite > include $(patsubst %,$(..)libof-iterator.mk,$(cpp-srcs-left)) > endif > > -all-nonlib := $(strip $(tests-internal) $(test-internal-extras) \ > - $(others) $(others-extras)) > +all-nonlib := $(strip $(others) $(others-extras)) > ifneq (,$(all-nonlib)) > cpp-srcs-left = $(all-nonlib) > lib := nonlib > include $(patsubst %,$(..)libof-iterator.mk,$(cpp-srcs-left)) > endif > > +# All internal tests use testsuite-internal module since for 64 bit time > +# support is set as default for MODULE_NAME=nonlib (which include some > +# installed programs. Missing close paren. > diff --git a/locale/localeinfo.h b/locale/localeinfo.h > index b3d4da0185..9e53681829 100644 > --- a/locale/localeinfo.h > +++ b/locale/localeinfo.h > @@ -50,7 +50,7 @@ struct __locale_data > { > const char *name; > const char *filedata; /* Region mapping the file data. */ > - off_t filesize; /* Size of the file (and the region). */ > + __off_t filesize; /* Size of the file (and the region). */ Why is that needed? Andreas.
On Thu, 17 Jun 2021, Adhemerval Zanella via Libc-alpha wrote: > The installed programs are built with a combination of different > values for MODULE_NAME, as below. To enable both Long File Support > and 64 bt time, -D_TIME_BITS=64 -D_FILE_OFFSET_BITS=64 is added for > nonlib, nscd, lddlibc4, ldconfig, locale_programs, and iconvprogs > modules. Using 64-bit filesystem interfaces in installed programs is bug 15333. Does this patch fix all instances where an installed program, on a 32-bit system, might end up using 32-bit filesystem or time interfaces (including any cases where APIs used in the programs need to change to fix things, e.g. any uses of fseek/ftell that need to become fseeko / ftello with use of off_t instead of long), or are there further cases left to be fixed?
On 17/06/2021 17:49, Joseph Myers wrote: > On Thu, 17 Jun 2021, Adhemerval Zanella via Libc-alpha wrote: > >> The installed programs are built with a combination of different >> values for MODULE_NAME, as below. To enable both Long File Support >> and 64 bt time, -D_TIME_BITS=64 -D_FILE_OFFSET_BITS=64 is added for >> nonlib, nscd, lddlibc4, ldconfig, locale_programs, and iconvprogs >> modules. > > Using 64-bit filesystem interfaces in installed programs is bug 15333. > > Does this patch fix all instances where an installed program, on a 32-bit > system, might end up using 32-bit filesystem or time interfaces (including > any cases where APIs used in the programs need to change to fix things, > e.g. any uses of fseek/ftell that need to become fseeko / ftello with use > of off_t instead of long), or are there further cases left to be fixed? > It seems that this patch still misses some non LFS usages: time32: : /lib/libmemusage.so: setitimer non-lfs: : /lib/libnss_files-2.33.9000.so: fsetpos non-lfs: : /lib/libnss_files-2.33.9000.so: fgetpos non-lfs: : /lib/libutil-2.33.9000.so: open non-lfs: : /lib/libmemusage.so: mmap non-lfs: : /lib/libmemusage.so: lseek non-lfs: : /lib/libnss_compat-2.33.9000.so: fsetpos non-lfs: : /lib/libnss_compat-2.33.9000.so: fgetpos non-lfs: : /lib/libSegFault.so: open non-lfs: : /lib/libnss_db-2.33.9000.so: mmap non-lfs: : /lib/libpcprofile.so: open non-lfs: : /lib/libnss_hesiod-2.33.9000.so: fopen non-lfs: : /lib/libresolv-2.33.9000.so: fopen non-lfs: : /usr/lib/audit/sotruss-lib.so: fcntl non-lfs: : /usr/lib/audit/sotruss-lib.so: open I will send an updated version.
On 17/06/2021 09:19, Andreas Schwab wrote: > On Jun 17 2021, Adhemerval Zanella via Libc-alpha wrote: > >> diff --git a/Makeconfig b/Makeconfig >> index 6482a43025..de30ba3fa6 100644 >> --- a/Makeconfig >> +++ b/Makeconfig >> @@ -851,6 +851,10 @@ endif >> # -fno-math-errno. >> +extra-math-flags = $(if $(filter libm,$(in-module)),-fno-math-errno,-fmath-errno) >> >> +# Use 64 bit time_t support for installed programs >> ++extra-time-flags = $(if $(filter nonlib nscd lddlibc4 ldconfig locale_programs iconvprogs,\ > > I'd suggest to put the list of module names in a variable, to make it > easier to shorten the line. I will add it. > >> diff --git a/Makerules b/Makerules >> index 12f1a5cb50..770a573134 100644 >> --- a/Makerules >> +++ b/Makerules >> @@ -1313,14 +1313,22 @@ lib := testsuite >> include $(patsubst %,$(..)libof-iterator.mk,$(cpp-srcs-left)) >> endif >> >> -all-nonlib := $(strip $(tests-internal) $(test-internal-extras) \ >> - $(others) $(others-extras)) >> +all-nonlib := $(strip $(others) $(others-extras)) >> ifneq (,$(all-nonlib)) >> cpp-srcs-left = $(all-nonlib) >> lib := nonlib >> include $(patsubst %,$(..)libof-iterator.mk,$(cpp-srcs-left)) >> endif >> >> +# All internal tests use testsuite-internal module since for 64 bit time >> +# support is set as default for MODULE_NAME=nonlib (which include some >> +# installed programs. > > Missing close paren. Ack. > >> diff --git a/locale/localeinfo.h b/locale/localeinfo.h >> index b3d4da0185..9e53681829 100644 >> --- a/locale/localeinfo.h >> +++ b/locale/localeinfo.h >> @@ -50,7 +50,7 @@ struct __locale_data >> { >> const char *name; >> const char *filedata; /* Region mapping the file data. */ >> - off_t filesize; /* Size of the file (and the region). */ >> + __off_t filesize; /* Size of the file (and the region). */ > > Why is that needed? It is a leftover from development, I will remove it.
diff --git a/Makeconfig b/Makeconfig index 6482a43025..de30ba3fa6 100644 --- a/Makeconfig +++ b/Makeconfig @@ -851,6 +851,10 @@ endif # -fno-math-errno. +extra-math-flags = $(if $(filter libm,$(in-module)),-fno-math-errno,-fmath-errno) +# Use 64 bit time_t support for installed programs ++extra-time-flags = $(if $(filter nonlib nscd lddlibc4 ldconfig locale_programs iconvprogs,\ + $(in-module)),-D_TIME_BITS=64 -D_FILE_OFFSET_BITS=64) + # We might want to compile with some stack-protection flag. ifneq ($(stack-protector),) +stack-protector=$(stack-protector) @@ -951,7 +955,7 @@ libio-include = -I$(..)libio built-modules = iconvprogs iconvdata ldconfig lddlibc4 libmemusage \ libSegFault libpcprofile librpcsvc locale-programs \ memusagestat nonlib nscd extramodules libnldbl libsupport \ - testsuite + testsuite testsuite-internal in-module = $(subst -,_,$(firstword $(libof-$(basename $(@F))) \ $(libof-$(<F)) \ @@ -991,7 +995,7 @@ endif override CFLAGS = -std=gnu11 -fgnu89-inline $(config-extra-cflags) \ $(filter-out %frame-pointer,$(+cflags)) $(+gccwarn-c) \ - $(+extra-math-flags) \ + $(+extra-math-flags) $(+extra-time-flags) \ $(sysdep-CFLAGS) $(CFLAGS-$(suffix $@)) $(CFLAGS-$(<F)) \ $(CFLAGS-$(@F)) $(tls-model) \ $(foreach lib,$(libof-$(basename $(@F))) \ diff --git a/Makerules b/Makerules index 12f1a5cb50..770a573134 100644 --- a/Makerules +++ b/Makerules @@ -1313,14 +1313,22 @@ lib := testsuite include $(patsubst %,$(..)libof-iterator.mk,$(cpp-srcs-left)) endif -all-nonlib := $(strip $(tests-internal) $(test-internal-extras) \ - $(others) $(others-extras)) +all-nonlib := $(strip $(others) $(others-extras)) ifneq (,$(all-nonlib)) cpp-srcs-left = $(all-nonlib) lib := nonlib include $(patsubst %,$(..)libof-iterator.mk,$(cpp-srcs-left)) endif +# All internal tests use testsuite-internal module since for 64 bit time +# support is set as default for MODULE_NAME=nonlib (which include some +# installed programs. +all-testsuite-internal := $(strip $(tests-internal) $(test-internal-extras)) +ifneq (,$(all-testsuite-internal)) +cpp-srcs-left = $(all-testsuite-internal) +lib := testsuite-internal +include $(patsubst %,$(..)libof-iterator.mk,$(cpp-srcs-left)) +endif ifeq ($(build-shared),yes) # Generate normalized lists of symbols, versions, and data sizes. diff --git a/locale/localeinfo.h b/locale/localeinfo.h index b3d4da0185..9e53681829 100644 --- a/locale/localeinfo.h +++ b/locale/localeinfo.h @@ -50,7 +50,7 @@ struct __locale_data { const char *name; const char *filedata; /* Region mapping the file data. */ - off_t filesize; /* Size of the file (and the region). */ + __off_t filesize; /* Size of the file (and the region). */ enum /* Flavor of storage used for those. */ { ld_malloced, /* Both are malloc'd. */