All of lore.kernel.org
 help / color / mirror / Atom feed
* [Buildroot] [PATCH] docs/manual: gcc 4.4 is the lowest we are known to work with
@ 2018-08-05 11:46 Yann E. MORIN
  2018-08-09 13:08 ` Matthew Weber
  0 siblings, 1 reply; 6+ messages in thread
From: Yann E. MORIN @ 2018-08-05 11:46 UTC (permalink / raw)
  To: buildroot

gcc-2.95 is old. No, it is not old; it is antediluvian.

The odlest gcc version we are testing against is gcc-4.4 (on Holiss'
autobuilder using RHEL6.5).

Update the manual accordingly.

Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
Cc: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
Cc: Hollis Blanchard <hollis_blanchard@mentor.com>
---
 docs/manual/prerequisite.txt | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/docs/manual/prerequisite.txt b/docs/manual/prerequisite.txt
index 110fab41fd..66e1b88f16 100644
--- a/docs/manual/prerequisite.txt
+++ b/docs/manual/prerequisite.txt
@@ -23,8 +23,8 @@ between distributions).
 ** +make+ (version 3.81 or any later)
 ** +binutils+
 ** +build-essential+ (only for Debian based systems)
-** +gcc+ (version 2.95 or any later)
-** `g++` (version 2.95 or any later)
+** +gcc+ (version 4.4 or any later)
+** `g++` (version 4.4 or any later)
 ** +bash+
 ** +patch+
 ** +gzip+
-- 
2.14.1

^ permalink raw reply related	[flat|nested] 6+ messages in thread

* [Buildroot] [PATCH] docs/manual: gcc 4.4 is the lowest we are known to work with
  2018-08-05 11:46 [Buildroot] [PATCH] docs/manual: gcc 4.4 is the lowest we are known to work with Yann E. MORIN
@ 2018-08-09 13:08 ` Matthew Weber
  2018-08-09 13:14   ` Baruch Siach
  2018-08-09 17:14   ` Hollis Blanchard
  0 siblings, 2 replies; 6+ messages in thread
From: Matthew Weber @ 2018-08-09 13:08 UTC (permalink / raw)
  To: buildroot

All,

On Sun, Aug 5, 2018 at 6:46 AM Yann E. MORIN <yann.morin.1998@free.fr> wrote:
>
> gcc-2.95 is old. No, it is not old; it is antediluvian.
>
> The odlest gcc version we are testing against is gcc-4.4 (on Holiss'
> autobuilder using RHEL6.5).
>

Any suggestions if we keep the minimum host compiler requirement at
4.4, how should I address the below build failures with "error:
'__ATOMIC_ACQUIRE' undeclared " on the RHEL6.5 autobuilder?
http://autobuild.buildroot.net/?reason=host-libselinux-2.7

If this was a more recent compiler version issue, I'd dig into the
package and look at up-streaming a compatibility ifdef check.

Matt

^ permalink raw reply	[flat|nested] 6+ messages in thread

* [Buildroot] [PATCH] docs/manual: gcc 4.4 is the lowest we are known to work with
  2018-08-09 13:08 ` Matthew Weber
@ 2018-08-09 13:14   ` Baruch Siach
  2018-08-09 13:41     ` Matthew Weber
  2018-08-09 17:14   ` Hollis Blanchard
  1 sibling, 1 reply; 6+ messages in thread
From: Baruch Siach @ 2018-08-09 13:14 UTC (permalink / raw)
  To: buildroot

Hi Matt,

Matthew Weber writes:
> On Sun, Aug 5, 2018 at 6:46 AM Yann E. MORIN <yann.morin.1998@free.fr> wrote:
>>
>> gcc-2.95 is old. No, it is not old; it is antediluvian.
>>
>> The odlest gcc version we are testing against is gcc-4.4 (on Holiss'
>> autobuilder using RHEL6.5).
>>
>
> Any suggestions if we keep the minimum host compiler requirement at
> 4.4, how should I address the below build failures with "error:
> '__ATOMIC_ACQUIRE' undeclared " on the RHEL6.5 autobuilder?
> http://autobuild.buildroot.net/?reason=host-libselinux-2.7
>
> If this was a more recent compiler version issue, I'd dig into the
> package and look at up-streaming a compatibility ifdef check.

The atomic operations were introduced in gcc version 4.7:

  https://gcc.gnu.org/gcc-4.7/changes.html

baruch

-- 
     http://baruch.siach.name/blog/                  ~. .~   Tk Open Systems
=}------------------------------------------------ooO--U--Ooo------------{=
   - baruch at tkos.co.il - tel: +972.52.368.4656, http://www.tkos.co.il -

^ permalink raw reply	[flat|nested] 6+ messages in thread

* [Buildroot] [PATCH] docs/manual: gcc 4.4 is the lowest we are known to work with
  2018-08-09 13:14   ` Baruch Siach
@ 2018-08-09 13:41     ` Matthew Weber
  0 siblings, 0 replies; 6+ messages in thread
From: Matthew Weber @ 2018-08-09 13:41 UTC (permalink / raw)
  To: buildroot

Baruch,
On Thu, Aug 9, 2018 at 8:15 AM Baruch Siach <baruch@tkos.co.il> wrote:
>
> Hi Matt,
>
> Matthew Weber writes:
> > On Sun, Aug 5, 2018 at 6:46 AM Yann E. MORIN <yann.morin.1998@free.fr> wrote:
> >>
> >> gcc-2.95 is old. No, it is not old; it is antediluvian.
> >>
> >> The odlest gcc version we are testing against is gcc-4.4 (on Holiss'
> >> autobuilder using RHEL6.5).
> >>
> >
> > Any suggestions if we keep the minimum host compiler requirement at
> > 4.4, how should I address the below build failures with "error:
> > '__ATOMIC_ACQUIRE' undeclared " on the RHEL6.5 autobuilder?
> > http://autobuild.buildroot.net/?reason=host-libselinux-2.7
> >
> > If this was a more recent compiler version issue, I'd dig into the
> > package and look at up-streaming a compatibility ifdef check.
>
> The atomic operations were introduced in gcc version 4.7:
>
>   https://gcc.gnu.org/gcc-4.7/changes.html
>

Yeah.

^ permalink raw reply	[flat|nested] 6+ messages in thread

* [Buildroot] [PATCH] docs/manual: gcc 4.4 is the lowest we are known to work with
  2018-08-09 13:08 ` Matthew Weber
  2018-08-09 13:14   ` Baruch Siach
@ 2018-08-09 17:14   ` Hollis Blanchard
  2018-08-13 14:35     ` Matthew Weber
  1 sibling, 1 reply; 6+ messages in thread
From: Hollis Blanchard @ 2018-08-09 17:14 UTC (permalink / raw)
  To: buildroot

On 08/09/2018 06:08 AM, Matthew Weber wrote:
>
> Any suggestions if we keep the minimum host compiler requirement at
> 4.4, how should I address the below build failures with "error:
> '__ATOMIC_ACQUIRE' undeclared " on the RHEL6.5 autobuilder?
> http://autobuild.buildroot.net/?reason=host-libselinux-2.7
>
> If this was a more recent compiler version issue, I'd dig into the
> package and look at up-streaming a compatibility ifdef check.
I'm not an expert in this area, but I'm surprised atomic operations are 
needed in addition to the pthread_mutex_lock. See these comments, for 
example: 
https://stackoverflow.com/questions/24137964/does-pthread-mutex-lock-contains-memory-fence-instruction 
. AFAIK, these atomic operations could be replaced with their native 
equivalents.

That said, I'm not using SELinux, and even if I were I wouldn't care too 
much about the host binaries, so I'm not interested in a lengthy email 
debate about compiler optimizations, processor pipelines, atomic 
operations, and memory barriers. :-) If we're not comfortable with 
removing them altogether, then I think we could use the older "__sync" 
builtins 
<https://gcc.gnu.org/onlinedocs/gcc-4.4.7/gcc/Atomic-Builtins.html> 
instead. Going for correctness instead of performance:

--- output/build/host-libselinux-2.7/src/label_file.h.orig      2018-08-09 09:47:46.432960085 -0700
+++ output/build/host-libselinux-2.7/src/label_file.h   2018-08-09 09:50:47.036960057 -0700
@@ -349,8 +349,14 @@
          * init_routine does not take a parameter, it's not possible
          * to use, so we generate the same effect with atomics and a
          * mutex */
+#ifdef __ATOMIC_ACQUIRE
         regex_compiled =
                 __atomic_load_n(&spec->regex_compiled, __ATOMIC_ACQUIRE);
+#else
+       /* GCC <4.7 */
+       __sync_synchronize();
+       regex_compiled = spec->regex_compiled;
+#endif
         if (regex_compiled) {
                 return 0; /* already done */
         }
@@ -358,8 +364,14 @@
         __pthread_mutex_lock(&spec->regex_lock);
         /* Check if another thread compiled the regex while we waited
          * on the mutex */
+#ifdef __ATOMIC_ACQUIRE
         regex_compiled =
                 __atomic_load_n(&spec->regex_compiled, __ATOMIC_ACQUIRE);
+#else
+       /* GCC <4.7 */
+       __sync_synchronize();
+       regex_compiled = spec->regex_compiled;
+#endif
         if (regex_compiled) {
                 __pthread_mutex_unlock(&spec->regex_lock);
                 return 0;
@@ -402,7 +414,13 @@
         }
  
         /* Done. */
+#ifdef __ATOMIC_RELEASE
         __atomic_store_n(&spec->regex_compiled, true, __ATOMIC_RELEASE);
+#else
+       /* GCC <4.7 */
+       spec->regex_compiled = true;
+       __sync_synchronize();
+#endif
         __pthread_mutex_unlock(&spec->regex_lock);
         return 0;
  }

If there's general agreement with this approach, I can submit it as a 
Buildroot patch.

Hollis Blanchard
Mentor Graphics Emulation Division

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.busybox.net/pipermail/buildroot/attachments/20180809/f849b621/attachment.html>

^ permalink raw reply	[flat|nested] 6+ messages in thread

* [Buildroot] [PATCH] docs/manual: gcc 4.4 is the lowest we are known to work with
  2018-08-09 17:14   ` Hollis Blanchard
@ 2018-08-13 14:35     ` Matthew Weber
  0 siblings, 0 replies; 6+ messages in thread
From: Matthew Weber @ 2018-08-13 14:35 UTC (permalink / raw)
  To: buildroot

All,
On Thu, Aug 9, 2018 at 12:14 PM Hollis Blanchard
<hollis_blanchard@mentor.com> wrote:
>
> On 08/09/2018 06:08 AM, Matthew Weber wrote:
>
>
> Any suggestions if we keep the minimum host compiler requirement at
> 4.4, how should I address the below build failures with "error:
> '__ATOMIC_ACQUIRE' undeclared " on the RHEL6.5 autobuilder?
> http://autobuild.buildroot.net/?reason=host-libselinux-2.7
>

I've submitted this patch to require at least 4.7. I don't have a
target to test this.  Hollis, would you mind trying it on your RHEL
6.5?

http://patchwork.ozlabs.org/patch/957001/

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2018-08-13 14:35 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2018-08-05 11:46 [Buildroot] [PATCH] docs/manual: gcc 4.4 is the lowest we are known to work with Yann E. MORIN
2018-08-09 13:08 ` Matthew Weber
2018-08-09 13:14   ` Baruch Siach
2018-08-09 13:41     ` Matthew Weber
2018-08-09 17:14   ` Hollis Blanchard
2018-08-13 14:35     ` Matthew Weber

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.