newlib: undefine _FORTIFY_SOURCE

Message ID 20211109025656.26127-1-vapier@gentoo.org
State New
Headers show
Series
  • newlib: undefine _FORTIFY_SOURCE
Related show

Commit Message

Mike Frysinger Nov. 9, 2021, 2:56 a.m.
Some distros enable _FORTIFY_SOURCE by default which upsets building
newlib which itself implements the logic for this define.  For example,
building gets.c fails because the includes set up a gets() macro which
expands in the definition.

Since newlib isn't prepared to build itself with _FORTIFY_SOURCE, and
it's not clear if it's even useful, disable it when building the code.
This also matches what glibc is doing.
---
 newlib/configure.host | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

-- 
2.33.0

Comments

Keith Packard Nov. 9, 2021, 3:15 a.m. | #1
Mike Frysinger <vapier@gentoo.org> writes:

> Since newlib isn't prepared to build itself with _FORTIFY_SOURCE, and

> it's not clear if it's even useful, disable it when building the code.


It is useful; I've caught a few library bugs when I turned this on for
picolibc. Fixing newlib to handle -D_FORTIFY_SOURCE could probably start
with the patches I did in picolibc, which mostly just #undef the various
mem and str functions before defining them.

General code:

https://github.com/picolibc/picolibc/commit/c2c593afa60b64bff0a958ad930e0336463db5bf

Arm specific code:

https://github.com/picolibc/picolibc/commit/b3946840fb3a677125bc9232ca93ea7533375188


-- 
-keith
Corinna Vinschen Nov. 9, 2021, 11:41 a.m. | #2
On Nov  8 19:15, Keith Packard wrote:
> Mike Frysinger <vapier@gentoo.org> writes:

> 

> > Since newlib isn't prepared to build itself with _FORTIFY_SOURCE, and

> > it's not clear if it's even useful, disable it when building the code.

> 

> It is useful; I've caught a few library bugs when I turned this on for

> picolibc. Fixing newlib to handle -D_FORTIFY_SOURCE could probably start

> with the patches I did in picolibc, which mostly just #undef the various

> mem and str functions before defining them.


Please send patches.


Thanks,
Corinna
Mike Frysinger Nov. 10, 2021, 2:07 a.m. | #3
On 08 Nov 2021 19:15, Keith Packard wrote:
> Mike Frysinger <vapier@gentoo.org> writes:

> > Since newlib isn't prepared to build itself with _FORTIFY_SOURCE, and

> > it's not clear if it's even useful, disable it when building the code.

> 

> It is useful; I've caught a few library bugs when I turned this on for

> picolibc. Fixing newlib to handle -D_FORTIFY_SOURCE could probably start

> with the patches I did in picolibc, which mostly just #undef the various

> mem and str functions before defining them.


i'm not against making it work, but it doesn't now, so we should disable the
logic if/until it's made to actually work.
-mike

Patch

diff --git a/newlib/configure.host b/newlib/configure.host
index e737f73f5f75..cb0c5d01f874 100644
--- a/newlib/configure.host
+++ b/newlib/configure.host
@@ -54,7 +54,7 @@ 
 #   have_init_fini	have init/fini ("yes" or "no", set to "yes" by default)
 #   noinclude		list of include files to not install
 
-newlib_cflags="-D_COMPILING_NEWLIB"
+newlib_cflags="-D_COMPILING_NEWLIB -U_FORTIFY_SOURCE"
 libm_machine_dir=
 machine_dir=
 shared_machine_dir=