dump-class-layout script not working

# Frank Jaeger (2 days ago)

Hello. First of all I'm really sorry if this is the wrong mailing list to post to, webkit-help would have probably been better but it doesn't seem very active.

I run into some problems while trying to use the dump-class-layout script (found in Tools/Scripts/). I built WebKit using the build-webkit script with the --debug flag.

After building, I tried to run the dump-class-layout script with the following arguments:

./Tools/Scripts/dump-class-layout --architecture=x86_64 -c Debug JavaScriptCore JSString

I also tried different frameworks and classes. The script always fails telling me that "no type matches x in y" where x is the class name I used in the run and y is the framework name.

Why is this happening? The script is correctly finding the built and symbolicated framework image, so why is it not working properly? Thanks in advance.

Contact us to advertise here
# Simon Fraser (a day ago)

Dump-class-layout uses the lldb python bindings. Maybe those are not available on your platform?

I think we’ve only ever tried it on macOS. What platform are you trying on?

Simon

# Joseph Pecoraro (20 hours ago)

On Nov 4, 2018, at 3:43 AM, Frank Jaeger <fjaeger77 at outlook.com> wrote:

Hello. First of all I'm really sorry if this is the wrong mailing list to post to, webkit-help would have probably been better but it doesn't seem very active.

I run into some problems while trying to use the dump-class-layout script (found in Tools/Scripts/). I built WebKit using the build-webkit script with the --debug flag.

After building, I tried to run the dump-class-layout script with the following arguments:

./Tools/Scripts/dump-class-layout --architecture=x86_64 -c Debug JavaScriptCore JSString

I also tried different frameworks and classes. The script always fails telling me that "no type matches x in y" where x is the class name I used in the run and y is the framework name.

Why is this happening? The script is correctly finding the built and symbolicated framework image, so why is it not working properly? Thanks in advance.

This just worked for me on Mojave.

$ ./Tools/Scripts/dump-class-layout --architecture=x86_64 -c Debug JavaScriptCore JSString +0 < 24> JSString +0 < 8> JSC::JSCell JSC::JSCell +0 < 1> JSC::HeapCell JSC::HeapCell +0 < 4> JSC::StructureID m_structureID +4 < 1> JSC::IndexingType m_indexingTypeAndMisc +5 < 1> JSC::JSType m_type +6 < 1> JSC::TypeInfo::InlineTypeFlags m_flags +7 < 1> JSC::CellState m_cellState +8 < 4> unsigned int m_length +12 < 2> uint16_t m_flags +14 < 2> <PADDING: 2 bytes> +16 < 8> WTF::String m_value +16 < 8> WTF::RefPtr<WTF::StringImpl, WTF::DumbPtrTraits<WTF::StringImpl> > m_impl +16 < 8> WTF::DumbPtrTraits<WTF::StringImpl>::StorageType m_ptr

Total byte size: 24 Total pad bytes: 2 Padding percentage: 8.33 %

Could you show your exact output?

Perhaps opening a Bugzilla bug and putting the details there would be best. I’d be interested to know your version of Xcode/lldb (lldb --version, xcodebuild -version).

# Simon Fraser (20 hours ago)

I assume you've actually done a debug build?

Your command line works for me:

100$ $ ./Tools/Scripts/dump-class-layout --architecture=x86_64 -c Debug JavaScriptCore JSString +0 < 24> JSString +0 < 8> JSC::JSCell JSC::JSCell +0 < 1> JSC::HeapCell JSC::HeapCell +0 < 4> JSC::StructureID m_structureID +4 < 1> JSC::IndexingType m_indexingTypeAndMisc +5 < 1> JSC::JSType m_type +6 < 1> JSC::TypeInfo::InlineTypeFlags m_flags +7 < 1> JSC::CellState m_cellState +8 < 4> unsigned int m_length +12 < 2> uint16_t m_flags +14 < 2> <PADDING: 2 bytes> +16 < 8> WTF::String m_value +16 < 8> WTF::RefPtr<WTF::StringImpl, WTF::DumbPtrTraits<WTF::StringImpl> > m_impl +16 < 8> WTF::DumbPtrTraits<WTF::StringImpl>::StorageType m_ptr

Total byte size: 24 Total pad bytes: 2 Padding percentage: 8.33 %

BTW you should never work on class layouts in debug builds, since they may be different from shipping.

There are some unit tests for dump-class-layout (they used to be run as part of webkitpy tests, but I think Dan changed that?). Do all the tests pass for you?

Simon

Want more features?

Request early access to our private beta of readable email premium.