diff mbox

[COMMITTED] Fix pretty printer failures when CPPFLAGS is defined with optimizations.

Message ID 1ca1a503-d571-2162-bf31-8059aae2564c@redhat.com
State New
Headers show

Commit Message

Carlos O'Donell Dec. 23, 2016, 6:49 p.m. UTC
In my build scripts I use:

export CFLAGS="-g -O2 -Wl,--build-id=none"
...
export CPPFLAGS="-g -O2 -Wl,--build-id=none"

The CPPFLAGS end up _after_ the per-test CFLAGS.

This means that the pretty printer tests compile at -O2 and fail.

The solution is that the pretty-printer tests must specify both CFLAGS and CPPFLAGS.

I've committed this as obvious until someone comes up with a better fix.

In the meantime it fixes anyone whose build specifies CPPFLAGS that conflict
with the pretty-printer requirements.

Committed.

2016-12-23  Carlos O'Donell  <carlos@redhat.com>

	* README.pretty-printers: Must specify CPPFLAGS-* also.
	* nptl/Makefile (CPPFLAGS-test-mutexattr-printers.c): Define.
	(CPPFLAGS-test-mutex-printers.c): Define.
	(CPPFLAGS-test-condattr-printers.c): Define.
	(CPPFLAGS-test-cond-printers.c): Define.
	(CPPFLAGS-test-rwlockattr-printers.c): Define.
	(CPPFLAGS-test-rwlock-printers.c): Define.

---

Comments

Martin Galvan Dec. 23, 2016, 7:48 p.m. UTC | #1
Whoops, I didn't think of that. Thanks for the patch!

(Btw: in the future please forward e-mails to martingalvan@sourceware.org, as I no longer work at Taller Technologies).
Siddhesh Poyarekar Dec. 26, 2016, 5:05 a.m. UTC | #2
On Saturday 24 December 2016 12:19 AM, Carlos O'Donell wrote:
> In my build scripts I use:
> 
> export CFLAGS="-g -O2 -Wl,--build-id=none"
> ...
> export CPPFLAGS="-g -O2 -Wl,--build-id=none"
> 
> The CPPFLAGS end up _after_ the per-test CFLAGS.
> 
> This means that the pretty printer tests compile at -O2 and fail.

-O2 is a C flag, not a cpp flag, so maybe the script is wrong?
Likewise, -Wl... flags ought to be in LDFLAGS.

Siddhesh
Andreas Schwab Dec. 27, 2016, 5:50 p.m. UTC | #3
On Dez 23 2016, Carlos O'Donell <carlos@redhat.com> wrote:

> In my build scripts I use:
>
> export CFLAGS="-g -O2 -Wl,--build-id=none"
> ...
> export CPPFLAGS="-g -O2 -Wl,--build-id=none"
>
> The CPPFLAGS end up _after_ the per-test CFLAGS.

Don't do that then.

> diff --git a/README.pretty-printers b/README.pretty-printers
> index 8662900..a2536ca 100644
> --- a/README.pretty-printers
> +++ b/README.pretty-printers
> @@ -126,11 +126,12 @@ You can use the existing unit tests as examples.
>  
>  4. Add the names of the pretty printer tests to the 'tests-printers' variable
>  in your submodule's Makefile (without extensions).  In addition, for each test
> -program you must define a corresponding CFLAGS-* variable and set it to
> -$(CFLAGS-printers-tests) to ensure they're compiled correctly.  For example,
> -test-foo-printer.c requires the following:
> +program you must define a corresponding CFLAGS-* and CPPFLAGS-* variable and
> +set it to $(CFLAGS-printers-tests) to ensure they're compiled correctly.  For
> +example, test-foo-printer.c requires the following:
>  
>  CFLAGS-test-foo-printer.c := $(CFLAGS-printers-tests)
> +CPPFLAGS-test-foo-printer.c := $(CFLAGS-printers-tests)

CPPFLAGS should only use CPPFLAGS.

Andreas.
diff mbox

Patch

diff --git a/README.pretty-printers b/README.pretty-printers
index 8662900..a2536ca 100644
--- a/README.pretty-printers
+++ b/README.pretty-printers
@@ -126,11 +126,12 @@  You can use the existing unit tests as examples.
 
 4. Add the names of the pretty printer tests to the 'tests-printers' variable
 in your submodule's Makefile (without extensions).  In addition, for each test
-program you must define a corresponding CFLAGS-* variable and set it to
-$(CFLAGS-printers-tests) to ensure they're compiled correctly.  For example,
-test-foo-printer.c requires the following:
+program you must define a corresponding CFLAGS-* and CPPFLAGS-* variable and
+set it to $(CFLAGS-printers-tests) to ensure they're compiled correctly.  For
+example, test-foo-printer.c requires the following:
 
 CFLAGS-test-foo-printer.c := $(CFLAGS-printers-tests)
+CPPFLAGS-test-foo-printer.c := $(CFLAGS-printers-tests)
 
 Finally, if your programs need to be linked with a specific library, you can add
 its name to the 'tests-printers-libs' variable in your submodule's Makefile.
diff --git a/nptl/Makefile b/nptl/Makefile
index 7ac9196..bed5bab 100644
--- a/nptl/Makefile
+++ b/nptl/Makefile
@@ -318,12 +318,22 @@  tests-printers := test-mutexattr-printers test-mutex-printers \
 		  test-condattr-printers test-cond-printers \
 		  test-rwlockattr-printers test-rwlock-printers
 
+# We must specify both CFLAGS and CPPFLAGS to override any
+# compiler options the user might have provided that conflict
+# with what we need e.g. user specifies CPPFLAGS with -O2 and
+# we need -O0.
 CFLAGS-test-mutexattr-printers.c := $(CFLAGS-printers-tests)
 CFLAGS-test-mutex-printers.c := $(CFLAGS-printers-tests)
 CFLAGS-test-condattr-printers.c := $(CFLAGS-printers-tests)
 CFLAGS-test-cond-printers.c := $(CFLAGS-printers-tests)
 CFLAGS-test-rwlockattr-printers.c := $(CFLAGS-printers-tests)
 CFLAGS-test-rwlock-printers.c := $(CFLAGS-printers-tests)
+CPPFLAGS-test-mutexattr-printers.c := $(CFLAGS-printers-tests)
+CPPFLAGS-test-mutex-printers.c := $(CFLAGS-printers-tests)
+CPPFLAGS-test-condattr-printers.c := $(CFLAGS-printers-tests)
+CPPFLAGS-test-cond-printers.c := $(CFLAGS-printers-tests)
+CPPFLAGS-test-rwlockattr-printers.c := $(CFLAGS-printers-tests)
+CPPFLAGS-test-rwlock-printers.c := $(CFLAGS-printers-tests)
 
 ifeq ($(build-shared),yes)
 tests-printers-libs := $(shared-thread-library)