I left out a few details ... you needed a panic that could put a
string before print was ready. But you've written the code already ...

so it was data segment alignment? That was my guess at the time.

On Fri, May 30, 2025 at 4:15 AM Daniel Maslowski via 9fans
<[email protected]> wrote:
>
> The problem we had was that print hadn't even worked yet, and as we figured, 
> due to data/text shenanigans.
> A print("hello"); would fail, but a `static char asdf[] = "asdf"; 
> print(asdf);` would work. (notation might be wrong here, sorry, I'm not that 
> into C...)
>
> Ron, how would that panic become visible? If the test fails, I would need to 
> be able to see its result.
>
> On Fri, May 30, 2025 at 6:54 AM Charles Forsyth <[email protected]> 
> wrote:
>>
>> copy attached
>> uncluttered by extensions
>> apparently ken thompson did the C version for unix (i just added the types),
>> which makes it an appropriate test for a new compiler and then kernel port.
>>
>>
>> On Thu, 29 May 2025 at 22:35, Charles Forsyth <[email protected]> 
>> wrote:
>>>
>>> that reminds me that the first kernel-level program i ran on new ports was 
>>> wump (hunt the wumpus),
>>> partly to debug similar effects, but also because it's fun if not just silly
>>>
>>> On Thu, 29 May 2025 at 22:05, Ron Minnich <[email protected]> wrote:
>>>> 
>>>> Daniel and Shawn made good progress on the risc-v port, and their
>>>> experience reminded me of a standard test I used to use while doing
>>>> ports.
>>>> 
>>>> long story short, for blue gene and other ports (early amd64) we added
>>>> this test in main
>>>> 
>>>> ulong x = 0x12345678;
>>>> 
>>>> main()
>>>> {
>>>>     if (x != 0x12345678) panic("unaligned data"):
>>>> 
>>>> ...
>>>> 
>>>> how can this test fail? x is in the data segment, but the immediate in
>>>> the test is in the text segment. This test is a quick and easy way to
>>>> check if your data segment is correctly loaded in memory.
>>>> 
>>>> In some ports, the data is aligned by code in l.s that moves it.
>>>> 
>>>> There are some really nasty, confusing errors that will arise in a
>>>> seemingly working kernel if data is not aligned.
>>>> 
>>>> I always add this test when I'm doing a port. It catches a problem
>>>> that is otherwise very confusing, and presents as strings  not set up
>>>> right, variables wrong, etc.
>
> 9fans / 9fans / see discussions + participants + delivery options Permalink

------------------------------------------
9fans: 9fans
Permalink: 
https://9fans.topicbox.com/groups/9fans/T2fa5d9bbce09411d-M82c6820a8a294df9f7b237c3
Delivery options: https://9fans.topicbox.com/groups/9fans/subscription

Reply via email to