Hi.

Wondering why you think a mailing-list is a review/tests review notepad.
Not under-rating your work, it's very fine, but why not a private chat ?
Or only when tested a simple comment on a fork ?

Btw, I'd be glad to test it on x86 32 bits linux 5.0.

Regards, ian

Le 02/12/2019 à 22:46, Herman ten Brugge via Tinycc-devel a écrit :
> Little updated patch. Still needs more work.
>
> Regards,
>
>     Herman
>
> On 2019-12-02 18:24, Herman ten Brugge wrote:
>> Hello,
>>
>> I did some debugging with bouds-checking and came up with attached
>> patch.
>> I seriously doubt any one did use bounds checking in a large project
>> before.
>>
>> Currently I can use this now in a large multi threaded project. It
>> still needs some more testing so do not apply the patch yet.
>>
>> I disabled some errors. For example if a bounded pointer is not found
>> I give no error. I also relaxed printing free errors.
>> There were some off by 1 errors in lib/bcheck.c and I needed to make
>> the code thread safe.
>> I used the patch to not link in libtcc1.a in shared objects when
>> bounds checking so I have only one memory pool.
>> This has to be documented because you cannot use this with dlopen for
>> example.
>> I also added the pthread library when bounds checking so it is now
>> multi threaded.
>> I found another problem with nocode_wanted when using sizeof().
>> Also the push/pop trick needed to push some more registers when more
>> parameters are passed in registers.
>>
>> I probably forget to mention a lot a other changes. See the patch.
>>
>> I only tested this on linux x86_64. There are for sure problems on
>> other targets.
>>
>> Regards,
>>
>>     Herman
>>
>>
>> On 2019-11-28 17:41, Michael Matz wrote:
>>> Hello again,
>>>
>>> but to maybe be a bit more constructive:
>>>
>>> On Thu, 28 Nov 2019, Michael Matz wrote:
>>>
>>>>> I fixed this with some push/pop trickery.
>>> I see, yeah, expanding calls during calls is broken as gfunc_call in
>>> the
>>> generators doesn't generally leave a trace in vtop[] which registers
>>> are
>>> currently holding values.  I think you only need so push/pop si/di, as
>>> cx/dx aren't used intentionally during reg-param setup.
>>>
>>> (I think i386-gen.c has a simila bug with fastcall functions).
>>>
>>>>> This probably could be
>>>>> improved. I have now added a minimum patch so bounds checking works a
>>>>> little bit. We need still to fix the shared lib reloc problems and
>>>>> the
>>>>> malloc/free hooks.
>>>> Do we?  Can we perhaps also simply declare bounds checking to work
>>>> only
>>>> with the main executable?  Or remove that whole feature altogether?
>>> And perhaps another compromise: only conditionally enable tracking of
>>> locals: Invent a new cmdline option (say, '-bb'), which sets
>>> do_bounds_checking to 2.  And only if it's > 1 you would also track
>>> locals, whereas with == 1 you would only track arrays and structs.
>>>
>>> Your decision, I think you can push this patch either with that
>>> change, or
>>> without (but try to remove cx/dx from the push/pop).  It doesn't
>>> make tccs
>>> source code larger or uglier in any meaningful way, but does fix
>>> practical
>>> bugs.
>>>
>>>
>>> Ciao,
>>> Michael.
>>
>
>
> _______________________________________________
> Tinycc-devel mailing list
> Tinycc-devel@nongnu.org
> https://lists.nongnu.org/mailman/listinfo/tinycc-devel
-- 
-- i...@sibian.fr
-- Développeur compulsif
_______________________________________________
Tinycc-devel mailing list
Tinycc-devel@nongnu.org
https://lists.nongnu.org/mailman/listinfo/tinycc-devel

Reply via email to