Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Padding #7

Closed
lorenzo-gomez-windhover opened this issue Nov 4, 2020 · 2 comments
Closed

Padding #7

lorenzo-gomez-windhover opened this issue Nov 4, 2020 · 2 comments
Assignees
Labels
enhancement New feature or request

Comments

@lorenzo-gomez-windhover
Copy link
Collaborator

lorenzo-gomez-windhover commented Nov 4, 2020

Padding cannot be extracted directly from the DWARF. It becomes even more complex when structures have bit fields. It's not an impossible task, but assumptions and scope of padding capabilities need to be concretely defined since any incorrect behavior caused by padding logic can compromise the correctness of the database. And therefore compromise the reliability of any ground system using juicer.

This will be a work-in-progress for now. Might create a new branch dedicated to solving padding.

@lorenzo-gomez-windhover lorenzo-gomez-windhover added the enhancement New feature or request label Nov 4, 2020
lorenzo-gomez-windhover added a commit that referenced this issue Nov 5, 2020
…have bitfields are ignored for now. Partially addresses #7.
@lorenzo-gomez-windhover
Copy link
Collaborator Author

UPDATE: For symbols that do not have any bitfields, padding at the end of structures is added. The padding field is given the name of _spare_end.

TODO: Document these changes.

lorenzo-gomez-windhover added a commit that referenced this issue Nov 5, 2020
…ded to structures that don't have bitfields. Partially addresses #7.
@lorenzo-gomez-windhover
Copy link
Collaborator Author

UPDATE: Support for padding in between fields of a structure has been added.

TODO:Add support for padding in structures that have bitfields. This should be handled almost the same way as structures without bitfields, however, the fields should be sorted by offset as these offsets may not follow ascending order when there is a bitfield inside a structure.

mbenson1 added a commit that referenced this issue Nov 4, 2024
* -Write macro records correctly. Fixes #7

* -Cleanup

* -Update unit testing for draco patterns. WIP.

* -Update eclipse project

* -Minimally functional target_symbol

* -Do not store row id for symbol target updates

* -Update github CI

* -Docker config for CI

* -Point submodules to github

* -Cleanup

* -Add symbols and encoding mappings. WIP.

* -Add symbols and encoding mappings. WIP.

* Writer DWARF5 ecodings to encodings table

* -Add minimally functional encodings implementation.
-TODO:Cleanup.

* -Update Makefile

* -Update gitignore

* -Cleanup

* -Remove Ubuntu18 from github actions since it is not available anymore.
-https://github.blog/changelog/2022-08-09-github-actions-the-ubuntu-18-04-actions-runner-image-is-being-deprecated-and-will-be-removed-by-12-1-22/

* -Remove dead code

* -Cleanup

* -Cleanup

* -Cleanup

* -Include unit test code in format checks.
-Format unit test code.

* -Update unit tests

* -Configure coveralls.io for CI

* -Configure coveralls.io for CI

* -Configure coveralls.io for CI

* -Configure coveralls.io for CI

* -Configure coveralls.io for CI

* -Configure coveralls.io for CI

* -Configure coveralls.io for CI

* -Configure coveralls.io for CI

* -Update docs

* -Update unit tests for new schema. WIP.
-TODO:Add function to follow target symbols to test typdef'd types.
-TODO:Add unit tests for new macro and elf image features.

* -Add followTargetSymbol. Useful for testing typedef'd types.
-Update unit tests.

* -Use CFE_ES_HousekeepingTlm_Payload for unit testing.

* -Update docs

* -Update docs

* -Extract ELF image data from 64-bit targets properly.
-Add ElfClass to ElfFile

* -Update docs

* -Update unit-test test files

* -Remove libdwarf from unit test code test file

* -Remove dead code

* -Remove dead code

* -Add 32-bit make recipes.
-Add 32-bit unit tests.

* -Update 32-bit unit testing.

* -Update docs

* -Remove dead code

* -Update Logger unit tests
-Remove dead code

* -Update unit tests

* -Update docs

* -Cleanup

* -Cleanup

* -Cleanup

* -Add macro unit test.
-Update Dockerfile

* -Create test files that comply with DWARF4 and DWARF5. Allows us to verify support of DWARF4 as more features are added in the future.

* -Unit test DWARF4 and DWARF5. WIP.

* -Add DWARF4 testing to Dockerfile

* -Cleanup

* -Update docs

* -Update docs

* -Update Catch 2 due to issue on Ubuntu22:catchorg/Catch2#2178

* -pathIndex handling for DWARF5. TODO:This changes for DWARF4, so add alternative for DWARF4.
-Remove DisplayDie function for now as it blows up the stack with big c++ names inside DWARF.
-TODO:Rewrite DisplayDie function
-Add include to src/Artifact.h, needed for Ubuntu22.

* -Handle DWARF dbg source files for DWARF4 and 5.
-TODO:Figure out what to do about Ubuntu 20/22 behavior producing different DWARF src file line number info for the same DWARF version.

* -Add group number as CLI argument. WIP.
-Issues of interest:#36, #35

* -Group number argument. Useful for getting DWARF data from multiple COMBAT sections, like macros inside of unlinked ELF files.

* -Add unit tests for macros across multiple COMDAT groups.

* -Cleanup

* -Update docs

* -Update unit tests.

* -Update Dockerfile for Ubuntu22

* -Update CI

* -Update Dockerfiles for Ubuntu20 and Ubuntu22

* -Update Makefile

* -Update CI

* -Update CI

* -Test DWARF version in unit tests

* -Update docs

* -Update docs

* -Update docs

* -Update docs. WIP.

* -Update docs

* -Cleanup

* -Cleanup

* -Update docs.
-Remove DECL code from pointer types. Pointer types do not have DECL coords.

* -Add unit tests for artifacts

* -Cleanup

* -Update test_file1

* -Remove dead code

* -Update tests in Docker files

* -Update docs

* -Update docs

* -Update docs

* -Update unit tests

* -Add support for unions. WIP.

* -Add support for unions. WIP.

* -Update CI to build Ubuntu20 first.

* -Update CI to build Ubuntu20 first.

* -Format files

* -Update union object used for unit tests

* -Add user to docker dev configs

* -Add support for unions. WIP.
-Update unit tests for unions. WIP.

* -Minimally functional union support.
-TODO:Upgrade to C++17 and std::optional for union fields, which will be NULL (or empty).

* -Remove dead code

* -Upgrade to C++17.
-Use optional for byte offset of fields.
-When  byte offset value is empty, write NULL to db. This allows to make a distinction between unions and structs.
-TODO:Finish union unit testing.
-TODO:Add union support documentation.

* -Update docs

* -Remove duplicate recipes from Makefile

* -Handle default case in getdbgSourceFile

* -Update unit testing for union support

* -Update unit testing for union support

* -Update docs

* -Update docs

* -Use std::optional for symbol encoding

* -Add vscode config

* -Add tests for padding. Fixes #21

* -Give root access to dev docker user

* -Use std::optional for getdbgSourceFile

* -Do not attempt to add padding for unions.
-Add checks to padding function.

* -Add warning message when field byte offsets do not exist

* -Add warning message when field byte offsets do not exist

* -Use git tag and latest commit as version value

* -Log warning when there is no DW_AT_name attribute

---------

Co-authored-by: Mathew Benson <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

1 participant