Re: [Tinycc-devel] Building sudo?

2020-11-29 Thread Christian Jullien
I’m beginning to understand your problem, you need ar and no one is present (or 
found).

Questions:

-  What is exactly your build system? Linux family , version, etc…

-  Why can’t you install binutils which contains ld, ar and such?

-  Sometimes, ar is called gar or gcc-ar or llvmar, sometimes it is 
also a link like: /usr/bin/ar -> arm-linux-gnueabihf-ar

 

I’ll be surprised if your system has no ar already installed.

 

C.

 

From: Tinycc-devel [mailto:tinycc-devel-bounces+eligis=orange...@nongnu.org] On 
Behalf Of James Mills
Sent: Sunday, November 29, 2020 12:45
To: jull...@eligis.com; tinycc-devel@nongnu.org
Subject: Re: [Tinycc-devel] Building sudo?

 

But just to be sure, I did it again by hand just like what you described

 

=> https://gist.github.com/prologic/8b3b6bff539a1f070e145200c33c971a

 

Perhaps as you suggested we make tcc ignore some flags?



James Mills / prologic

E:   prolo...@shortcircuit.net.au

W:   prologic.shortcircuit.net.au

Blog:    Read my Blog

Twtxt:   Follow me on twtxt.net

 

 

On Sun, Nov 29, 2020 at 9:41 PM James Mills  
wrote:

That doesn't work :/

 

./configure  is expecting to find an `ar` utility

 

=> https://gist.github.com/prologic/91c8be731d45446bc40987958ee75403

 

cheers

James



James Mills / prologic

E:   prolo...@shortcircuit.net.au

W:   prologic.shortcircuit.net.au

Blog:    Read my Blog

Twtxt:   Follow me on twtxt.net

 

 

On Sun, Nov 29, 2020 at 12:06 AM Christian Jullien  wrote:

Can you try:

 

$ (unalias ar; CC=tcc ./configure --enable-shared=no)

 

From: Tinycc-devel [mailto:tinycc-devel-bounces+eligis 
 =orange...@nongnu.org] On Behalf Of 
James Mills
Sent: Saturday, November 28, 2020 12:44
To: jull...@eligis.com; tinycc-devel@nongnu.org
Subject: Re: [Tinycc-devel] Building sudo?

 

I did and it fails the same way.

 

cheers

 

James



James Mills / prologic

E:   prolo...@shortcircuit.net.au

W:   prologic.shortcircuit.net.au

Blog:    Read my Blog

Twtxt:   Follow me on twtxt.net

 

 

On Sun, Nov 22, 2020 at 3:43 AM Christian Jullien  wrote:

James,

Have you tried "CC=tcc ./configure --enable-shared=no" as I said.
It works ROOTB with sudo-1.9.3p1.tar.gz on both arm (RPi) and x64

w.o. --enable-shared=no it fails because tcc does not support or recognize 
-Wl,--version-script, maybe tcc should simply ignore this option.

-Original Message-
From: Tinycc-devel [mailto:tinycc-devel-bounces+eligis 
 =orange...@nongnu.org] On Behalf Of 
Michael Matz
Sent: Friday, November 20, 2020 20:37
To: tinycc-devel@nongnu.org
Subject: Re: [Tinycc-devel] Building sudo?

Hello,

On Fri, 20 Nov 2020, James Mills wrote:

> Are you saying if I don't alias ar to tcc -ar it will build?

If you have another POSIX compatible ar, I suspect so, yes.

> What am I missing? I need to alias ar to tcc -ar for other builds to 
> work :)

Well, it seems that sudo, as part of its default build process, wants to 
extract archives it built itself.  tcc -ar simply is incapable of that (right 
now), it only supports creating archives.  So, if you don't want to hack sudo's 
build system then you need an 'ar' that can extract archives. 
If you then do have such 'ar' (in $PATH), then not aliasing 'ar' to 'tcc -ar' 
will do the right thing.

If you don't have any such 'ar', but only tcc, then you can't make it work 
except by changing sudo's build system or implementing the missing 
functionality in tcc -ar.

It's may for instance be possible to build binutils (at least parts of it) with 
tcc, then you would have a capable 'ar' program available.


Ciao,
Michael.

> 
> cheers
> James
> 
> James Mills / prologic
> 
> E: prolo...@shortcircuit.net.auw: prologic.shortcircuit.net.au
> Blog:  Read my Blog
> Twtxt: Follow me on twtxt.net
> 
> 
> On Thu, Nov 19, 2020 at 5:28 AM Michael Matz  wrote:
>   Hello,
>
>   On Tue, 17 Nov 2020, James Mills wrote:
>
>   > Hi guys,
>   > Tried to build sudo with tcc and it fails with:
>   >
>   > libtool: link: (cd .libs/sudoers.lax/libparsesudoers.a && 
> arx"/usr/ports/sudo/build/src/sudo-1.9.3p1/plugins/sudoers/./.libs/libparsesu
>   d
>   > oers.a")
>   > usage: tcc -ar [rcsv] lib file...
>   > create library ([abdioptxN] not supported).
>   > make[1]: *** [Makefile:277: sudoers.la] Error 1
>   > make[1]: Leaving directory
>   > '/usr/ports/sudo/build/src/sudo-1.9.3p1/plugins/sudoers'
>   > make: *** [Makefile:108: all] Error 2
>   > #
>
>   TCCs 

Re: [Tinycc-devel] struct bug: identical named struct members

2020-11-29 Thread Tyge Løvset
Hi Michael,

>> I guess there as many map implementations as there are C developers :-)
>
> Though I should say that yours from C99Containers look nice to use,
> despite the macros-as-template hell in the implementation :-)

Thanks! Well after some time, it became second nature to program like that
:)  But seriously, it is the only way to create fast generic code in C, and
as a bonus you don't get type unsafety and casting-hell all over the place.
It *can* create some code bloat (as with templates), but normally not a
problem. Yes there are hundreds of C map implementations out there, but
they are mostly pretty bad, trust me ;)  (slow, bloated, buggy, bad API,
incomplete, I could go on..)

> (what's the spirit?  I don't know, you'll eventually get a feeling
for it.)
Shouldn't be a huge problem, I'm quite old-school in this regard, and
probably use way too much time optimizing for short and efficient code...

> But do try, if the implementation turns out to not add memory overhead and
> many source lines, and is generally in the spirit of TCC, why not :)

After looking more at the code, I could agree that a new map implementation
may not be necessary. Normally local scopes have a fairly limited number of
identifiers, it's the global scope that requires an efficient symbol table.
I do understand how the table_ident[] is segmented into different types of
lookups, but I would still need to look more into it to fully understand
it.. E.g. It looks like the hashing table is primarily used for the
preprocessor symbols, but partly also for other identifiers?

> Mostly because of the T in tiny c compiler and because no profiling
shows field lookup to be a problem :)

I have to disagree with this assessment. I only found this bug after
debugging myself. When structs have more than e.g. 10 fields, it is easy to
add a name that already existed... But my main question is why are enums
fields then checked, and what is the principal difference of checking enum
fields and struct fields (other than struct creates a new scope during
parsing)?

Cheers.
Tyge.

On Sun, 29 Nov 2020 at 00:16, Michael Matz  wrote:

> Hello again,
>
> On Sun, 29 Nov 2020, Michael Matz wrote:
>
> >>  The only other fast C map I know
> >>  of is khash (https://attractivechaos.github.io/klib), however not
> memory
> >>  efficient, and the codebase is somewhat bigger.
> >
> > I guess there as many map implementations as there are C developers :-)
>
> Though I should say that yours from C99Containers look nice to use,
> despite the macros-as-template hell in the implementation :-)
>
>
> Ciao,
> Michael.___
> Tinycc-devel mailing list
> Tinycc-devel@nongnu.org
> https://lists.nongnu.org/mailman/listinfo/tinycc-devel
>
___
Tinycc-devel mailing list
Tinycc-devel@nongnu.org
https://lists.nongnu.org/mailman/listinfo/tinycc-devel


Re: [Tinycc-devel] Building sudo?

2020-11-29 Thread James Mills
But just to be sure, I did it again by hand just like what you described

=> https://gist.github.com/prologic/8b3b6bff539a1f070e145200c33c971a

Perhaps as you suggested we make tcc ignore some flags?

James Mills / prologic

E: prolo...@shortcircuit.net.au
W: prologic.shortcircuit.net.au
Blog:  Read my Blog 
Twtxt: Follow me on twtxt.net 


On Sun, Nov 29, 2020 at 9:41 PM James Mills 
wrote:

> That doesn't work :/
>
> ./configure  is expecting to find an `ar` utility
>
> => https://gist.github.com/prologic/91c8be731d45446bc40987958ee75403
>
> cheers
> James
>
> James Mills / prologic
>
> E: prolo...@shortcircuit.net.au
> W: prologic.shortcircuit.net.au
> Blog:  Read my Blog 
> Twtxt: Follow me on twtxt.net 
>
>
> On Sun, Nov 29, 2020 at 12:06 AM Christian Jullien 
> wrote:
>
>> Can you try:
>>
>>
>>
>> $ (unalias ar; CC=tcc ./configure --enable-shared=no)
>>
>>
>>
>> *From:* Tinycc-devel [mailto:tinycc-devel-bounces+eligis=
>> orange...@nongnu.org] *On Behalf Of *James Mills
>> *Sent:* Saturday, November 28, 2020 12:44
>> *To:* jull...@eligis.com; tinycc-devel@nongnu.org
>> *Subject:* Re: [Tinycc-devel] Building sudo?
>>
>>
>>
>> I did and it fails the same way.
>>
>>
>>
>> cheers
>>
>>
>>
>> James
>>
>>
>> James Mills / prologic
>>
>> E: prolo...@shortcircuit.net.au
>>
>> W: prologic.shortcircuit.net.au
>>
>> Blog:  Read my Blog 
>>
>> Twtxt: Follow me on twtxt.net 
>>
>>
>>
>>
>>
>> On Sun, Nov 22, 2020 at 3:43 AM Christian Jullien 
>> wrote:
>>
>> James,
>>
>> Have you tried "CC=tcc ./configure --enable-shared=no" as I said.
>> It works ROOTB with sudo-1.9.3p1.tar.gz on both arm (RPi) and x64
>>
>> w.o. --enable-shared=no it fails because tcc does not support or
>> recognize -Wl,--version-script, maybe tcc should simply ignore this option.
>>
>> -Original Message-
>> From: Tinycc-devel [mailto:tinycc-devel-bounces+eligis=
>> orange...@nongnu.org] On Behalf Of Michael Matz
>> Sent: Friday, November 20, 2020 20:37
>> To: tinycc-devel@nongnu.org
>> Subject: Re: [Tinycc-devel] Building sudo?
>>
>> Hello,
>>
>> On Fri, 20 Nov 2020, James Mills wrote:
>>
>> > Are you saying if I don't alias ar to tcc -ar it will build?
>>
>> If you have another POSIX compatible ar, I suspect so, yes.
>>
>> > What am I missing? I need to alias ar to tcc -ar for other builds to
>> > work :)
>>
>> Well, it seems that sudo, as part of its default build process, wants to
>> extract archives it built itself.  tcc -ar simply is incapable of that
>> (right now), it only supports creating archives.  So, if you don't want to
>> hack sudo's build system then you need an 'ar' that can extract archives.
>> If you then do have such 'ar' (in $PATH), then not aliasing 'ar' to 'tcc
>> -ar' will do the right thing.
>>
>> If you don't have any such 'ar', but only tcc, then you can't make it
>> work except by changing sudo's build system or implementing the missing
>> functionality in tcc -ar.
>>
>> It's may for instance be possible to build binutils (at least parts of
>> it) with tcc, then you would have a capable 'ar' program available.
>>
>>
>> Ciao,
>> Michael.
>>
>> >
>> > cheers
>> > James
>> >
>> > James Mills / prologic
>> >
>> > E: prolo...@shortcircuit.net.auw: prologic.shortcircuit.net.au
>> > Blog:  Read my Blog
>> > Twtxt: Follow me on twtxt.net
>> >
>> >
>> > On Thu, Nov 19, 2020 at 5:28 AM Michael Matz 
>> wrote:
>> >   Hello,
>> >
>> >   On Tue, 17 Nov 2020, James Mills wrote:
>> >
>> >   > Hi guys,
>> >   > Tried to build sudo with tcc and it fails with:
>> >   >
>> >   > libtool: link: (cd .libs/sudoers.lax/libparsesudoers.a &&
>> arx"/usr/ports/sudo/build/src/sudo-1.9.3p1/plugins/sudoers/./.libs/libparsesu
>> >   d
>> >   > oers.a")
>> >   > usage: tcc -ar [rcsv] lib file...
>> >   > create library ([abdioptxN] not supported).
>> >   > make[1]: *** [Makefile:277: sudoers.la] Error 1
>> >   > make[1]: Leaving directory
>> >   > '/usr/ports/sudo/build/src/sudo-1.9.3p1/plugins/sudoers'
>> >   > make: *** [Makefile:108: all] Error 2
>> >   > #
>> >
>> >   TCCs own 'ar' functionality is very limited, it's not a full
>> >   replacement.
>> >
>> >   > Is tcc missing a feature needed here? Is there a work-around?
>> >
>> >   Yes, don't alias 'ar' to 'tcc -ar'.
>> >
>> >
>> >   Ciao,
>> >   Michael.
>> >
>> >   ___
>> >   Tinycc-devel mailing list
>> >   Tinycc-devel@nongnu.org
>> >   https://lists.nongnu.org/mailman/listinfo/tinycc-devel
>> >
>> >
>> >
>>
>>
>> ___
>> Tinycc-devel mailing list
>> Tinycc-devel@nongnu.org
>> https://lists.nongnu.org/mailman/listinfo/tinycc-devel
>>
>> ___
>> Tinycc-devel mailing list
>> 

Re: [Tinycc-devel] Building sudo?

2020-11-29 Thread James Mills
That doesn't work :/

./configure  is expecting to find an `ar` utility

=> https://gist.github.com/prologic/91c8be731d45446bc40987958ee75403

cheers
James

James Mills / prologic

E: prolo...@shortcircuit.net.au
W: prologic.shortcircuit.net.au
Blog:  Read my Blog 
Twtxt: Follow me on twtxt.net 


On Sun, Nov 29, 2020 at 12:06 AM Christian Jullien  wrote:

> Can you try:
>
>
>
> $ (unalias ar; CC=tcc ./configure --enable-shared=no)
>
>
>
> *From:* Tinycc-devel [mailto:tinycc-devel-bounces+eligis=
> orange...@nongnu.org] *On Behalf Of *James Mills
> *Sent:* Saturday, November 28, 2020 12:44
> *To:* jull...@eligis.com; tinycc-devel@nongnu.org
> *Subject:* Re: [Tinycc-devel] Building sudo?
>
>
>
> I did and it fails the same way.
>
>
>
> cheers
>
>
>
> James
>
>
> James Mills / prologic
>
> E: prolo...@shortcircuit.net.au
>
> W: prologic.shortcircuit.net.au
>
> Blog:  Read my Blog 
>
> Twtxt: Follow me on twtxt.net 
>
>
>
>
>
> On Sun, Nov 22, 2020 at 3:43 AM Christian Jullien 
> wrote:
>
> James,
>
> Have you tried "CC=tcc ./configure --enable-shared=no" as I said.
> It works ROOTB with sudo-1.9.3p1.tar.gz on both arm (RPi) and x64
>
> w.o. --enable-shared=no it fails because tcc does not support or recognize
> -Wl,--version-script, maybe tcc should simply ignore this option.
>
> -Original Message-
> From: Tinycc-devel [mailto:tinycc-devel-bounces+eligis=
> orange...@nongnu.org] On Behalf Of Michael Matz
> Sent: Friday, November 20, 2020 20:37
> To: tinycc-devel@nongnu.org
> Subject: Re: [Tinycc-devel] Building sudo?
>
> Hello,
>
> On Fri, 20 Nov 2020, James Mills wrote:
>
> > Are you saying if I don't alias ar to tcc -ar it will build?
>
> If you have another POSIX compatible ar, I suspect so, yes.
>
> > What am I missing? I need to alias ar to tcc -ar for other builds to
> > work :)
>
> Well, it seems that sudo, as part of its default build process, wants to
> extract archives it built itself.  tcc -ar simply is incapable of that
> (right now), it only supports creating archives.  So, if you don't want to
> hack sudo's build system then you need an 'ar' that can extract archives.
> If you then do have such 'ar' (in $PATH), then not aliasing 'ar' to 'tcc
> -ar' will do the right thing.
>
> If you don't have any such 'ar', but only tcc, then you can't make it work
> except by changing sudo's build system or implementing the missing
> functionality in tcc -ar.
>
> It's may for instance be possible to build binutils (at least parts of it)
> with tcc, then you would have a capable 'ar' program available.
>
>
> Ciao,
> Michael.
>
> >
> > cheers
> > James
> >
> > James Mills / prologic
> >
> > E: prolo...@shortcircuit.net.auw: prologic.shortcircuit.net.au
> > Blog:  Read my Blog
> > Twtxt: Follow me on twtxt.net
> >
> >
> > On Thu, Nov 19, 2020 at 5:28 AM Michael Matz 
> wrote:
> >   Hello,
> >
> >   On Tue, 17 Nov 2020, James Mills wrote:
> >
> >   > Hi guys,
> >   > Tried to build sudo with tcc and it fails with:
> >   >
> >   > libtool: link: (cd .libs/sudoers.lax/libparsesudoers.a &&
> arx"/usr/ports/sudo/build/src/sudo-1.9.3p1/plugins/sudoers/./.libs/libparsesu
> >   d
> >   > oers.a")
> >   > usage: tcc -ar [rcsv] lib file...
> >   > create library ([abdioptxN] not supported).
> >   > make[1]: *** [Makefile:277: sudoers.la] Error 1
> >   > make[1]: Leaving directory
> >   > '/usr/ports/sudo/build/src/sudo-1.9.3p1/plugins/sudoers'
> >   > make: *** [Makefile:108: all] Error 2
> >   > #
> >
> >   TCCs own 'ar' functionality is very limited, it's not a full
> >   replacement.
> >
> >   > Is tcc missing a feature needed here? Is there a work-around?
> >
> >   Yes, don't alias 'ar' to 'tcc -ar'.
> >
> >
> >   Ciao,
> >   Michael.
> >
> >   ___
> >   Tinycc-devel mailing list
> >   Tinycc-devel@nongnu.org
> >   https://lists.nongnu.org/mailman/listinfo/tinycc-devel
> >
> >
> >
>
>
> ___
> Tinycc-devel mailing list
> Tinycc-devel@nongnu.org
> https://lists.nongnu.org/mailman/listinfo/tinycc-devel
>
> ___
> Tinycc-devel mailing list
> Tinycc-devel@nongnu.org
> https://lists.nongnu.org/mailman/listinfo/tinycc-devel
>
___
Tinycc-devel mailing list
Tinycc-devel@nongnu.org
https://lists.nongnu.org/mailman/listinfo/tinycc-devel


Re: [Tinycc-devel] struct bug: identical named struct members

2020-11-29 Thread Christian Jullien
Hello,
Structures "generally" have around 10 to 20 variables.
There is also cases where there are huge when they collect all "global" 
variables of a lib.
This append for example if you need multiple instance of the same lib, each 
having its own state.
Doing so has the advantage to put variables close together which improves L1 
cache access.
Switching from real global variables to a structures saved me around 2% in 
speed for my OpenLisp compiler.
The structure which contains all OpenLisp variables has around 750 variables!!!

M2c

-Original Message-
From: Tinycc-devel [mailto:tinycc-devel-bounces+eligis=orange...@nongnu.org] On 
Behalf Of Michael Matz
Sent: Sunday, November 29, 2020 00:15
To: tinycc-devel@nongnu.org
Subject: Re: [Tinycc-devel] struct bug: identical named struct members

Hello again,

On Sun, 29 Nov 2020, Michael Matz wrote:

>>  The only other fast C map I know
>>  of is khash (https://attractivechaos.github.io/klib), however not 
>> memory  efficient, and the codebase is somewhat bigger.
>
> I guess there as many map implementations as there are C developers 
> :-)

Though I should say that yours from C99Containers look nice to use, despite the 
macros-as-template hell in the implementation :-)


Ciao,
Michael.


___
Tinycc-devel mailing list
Tinycc-devel@nongnu.org
https://lists.nongnu.org/mailman/listinfo/tinycc-devel