Releases: DanielT/a2ltool
Releases · DanielT/a2ltool
Release list
Version v3.4.1
- Allow insertion of bitfield values using
--measurement/--characteristic. It was already possible to insert them using regexes; this change restores parity. - When creating items with
--from-source,MAIN_GROUPis now used as the default group for any items if there is noGROUPstatement (@lennart24) - Fix: ignore constexpr members in C++ classes/structs while loading debug info instead of pretending they're at offset 0
- Fix: C++ allows inheritance on structs too; the dwarf debug reader now handles this case
- Fix: correctly update
MATRIX_DIMof aCHARACTERISTICthat represents a struct member selected byFNC_VALUES - Fix: Verify
CHARACTERISTICbit masks in strict update mode - Fix: 64-bit enums with negative values were not detected as signed
Version v3.4.0
- a2ltool can now be installed as a Python wheel using
pip install a2ltool(by zariiii9003)
a2lfile
- update to a2lfile 3.5.0
- Don't crash when removing the last item from a list
- Don't crash during check if CHARACTERISTIC has 6 or more AXIS_DESCR
- Don't crash on a cycle of /include directives
- Don't crash on a cycle of A2ML /include directives
- Fix infinite loop when parsing empty TaggedStruct/TaggedUnion in IF_DATA
- Reject signed hex numerical constants like "-0x20" in the tokenizer
- Fix TYPEDEF_* and INSTANCE-related module merging bugs
- Fix bad error messages for CrossReferenceError during check
- Fix merge of FUNCTION.DEF_CHARACTERISTIC and FUNCTION.REF_CHARACTERISTIC, which were previously ignored
- Fix: STATUS_STRING_REF target can be deleted by cleanup
- Fix: off by one in CRLF detection at the end of A2ML blocks
- merge-includes in IF_DATA now recurses into Array/Sequence
Creator (--from-source)
- Fix: the creator no longer crashes on recursive structure definitions; these are now reported as an error, since a recursive struct definition cannot occur in a real program
- Fix: a single comment can now contain multiple a2l creator commands
- Fix: incorrect handling of
VAR_CHARACTERISTICin the creator - Fix: the creator no longer crashes when a
VAR_CRITERIONhas no values - Fix: the creator no longer crashes on malformed input
- Fix: the creator no longer creates duplicate item names
- Fix: curve/map items could not be changed using
overwrite - Fix: use the correct compu_tab for a compu_method if the target's name had to be changed to avoid a naming conflict
- Prevent arithmetic errors while creating an axis with a fixed range
- Improve handling of invalid split templates
- Fix: correct the position tracking in the comment scanner, which could cause incorrect error locations
- Prevent a
u16overflow when creating a string object or flattening matrix dimensions during version downgrade; values are saturated instead - The
ALIASof anINSTANCEdefinition is now also applied without--enable-structures
Insert
- Fix: newly inserted characteristics no longer use the raw input string as the item name; they are now cleaned up the same way as inserted measurements
- Complex C++ symbol names are now fully cleaned up when inserting items. Previously only
::was removed, so characters like<and>could remain, producing invalid a2l identifiers - Fix:
--old-arrayswas ignored when inserting new items - Fix: create
REF_CHARACTERISTICinstead ofREF_MEASUREMENTfor calibration-typeINSTANCEs
Update
- Fix: the update result for
INSTANCEs andVAR_CHARACTERISTICs is now correctly counted as a strict-mode error - Fix: reduce unnecessary rebuilding of types while updating
INSTANCEs andTYPEDEFs - Fix: possible record layout name conflicts when new record layouts are created during an update
- Fix a potential crash while updating
VAR_ADDRESS - Fix: the displayed update count for
VAR_CHARACTERISTICwas always zero - Fix:
IF_DATA CANAPE_EXTentries were incorrectly zeroed out during an address-only update - Fix: the size field in the
IF_DATA ASAP1B_CCPblock was incorrectly zeroed out during an address-only update - Fix a potential crash while updating typedefs
- Fix: cleanup of unused typedefs could stop too early
- Fix a potential crash during typedef update for 64-bit bitfields
- Fix: typedef-nested arrays could get their inner dimension encoded twice
- Fix:
SymbolNotFounderrors were logged twice
Remove
- Fix: a2ltool no longer crashes if the regex given to
--removeis invalid - Fix: remove ranges are now upper-exclusive, as documented
Debug info (DWARF/PDB)
- Fix a crash when DWARF data contains an array of zero-sized elements
- Fix: PDB multi-dimensional arrays had the wrong strides
- Fix a crash on invalid PDB files; this is now reported as an error instead
- Fix: PDB type info for global variables could be overwritten by type info of a static variable with the same name
- Fix: derived class member types could be overwritten with base class info
- Handle array dimensions more carefully: incomplete debug info could produce arrays without a dimension, and dimensions larger than
u16were not handled correctly
General
- Fix regex matching for patterns containing
|(alternatives), used by--insertand--removeby name. Unanchored patterns without^/$were previously extended incorrectly, soa|bbecame^a|b$; they are now wrapped in a group, e.g.^(?:a|b)$ - Fix: allow
--target-groupto be combined with both--from-sourceand--characteristic-section, as intended - Fix the mangled-symbol fallback path when the original Symbol Link contains extra info such as
{Namespace:Global} - Don't fail to set the version if the file has no existing
ASAP2_VERSION - Fix: upper limits of signed bitfields were off by one
- Fix limit calculation for linear conversions with negative factors
- Prevent division by zero when recalculating
RAT_FUNClimits
Version v3.3.0
- Allow the INSTANCE definition in source comments to contain multpile groups and an alias.
- Fix: Take the symbol offset into account when using CANAPE_EXT/LINK_MAP to identify a symbol
- Fix: specifiying an invalid file name with --from-source is an error. When specifiying multiple files or patterns at least one file must be valid and readable.
- Fix: Correct some errors in the documented grammar of the comment syntax used by --from-source
Version v3.2.2
Fix: Preserve top level comments during all operations
Version v3.2.1
- Fix: repeatedly resolve type references until an actual type is found. This fixed nested type references in PDB debug info (by Louis Caron)
- Fix new clippy warnings
- update to a2lfile 3.3.2
- Fix: Allow fallback parser to skip comments in unknown IF_DATA blocks (Akhil T Thomas)
- Fix: Non-strict parsing should not fail if a string was expected, but comment + identifier was found. Previously the comment prevented the error recovery, where an identifier is accepted in place of a string. (Louis Caron)
Version v3.2.0
- Fix: creating new
TYPEDEF_CHARACTERISTICs from the command line was broken - Fix: Handle of the offset value in
SYMBOL_LINKs correctly. - DWARF type reader: get names from
DebugLineStrReftoo - estimate sizes for structures created using
--from-source
Version v3.1.0
- Add the
--old-arraysoption. It allows the use of old array notation (e.g. "._3_") to be forced,
even if the file version is 1.7.0 or 1.7.1 where new array notation (e.g. [2]) is possible. - Add the
--insert-a2mloption. When this option is set, a2ltool's built-in A2ML defintion is inserted into the a2l file if it doesn't contain an one already. - Bugfix: In some cases, depending on the debug info generated by the compiler, integer types were treated as bitfields
- Bugfix: The upper limit of bitfield values is no longer off by one
- Bugfix: prevent infinite recursion in the DWARF debug data reader if the element type of an array is the array itself
- Workaround: Some compilers claim that an enum is unsigned even if it contains enumerators with negative values. In this case the datatype is switched to a signed type.
- ignore case in parameters of command line options. For example
--update ADDRESSEScan also be written as--update addressesnow. - Correctly support the combination of
--enable-structureswith--from-source - Stop with an error message if there are problems while processing definitions in source files
Version v3.0.0
- Implement compatibility with Vector's ASAP2 Creator and allow creation of a2l elements using the same special comment syntax
- Implement additional modes for file merges.
The standard so far was to keep both conflicting elements. Now the--merge-preferenceoption can be used to always use the existing version or the new version instead. - Add a manual for a2ltool.
- Support non-standard
SYMBOL-LINKnotation, where the compile unit name is used as a prefix of the real symbol name - Implement the ability to update
VAR_ADDRESSinfo ofVAR_CHARACTERISTIC - Handle negative bit-offsets in DWARF2 debug info correctly instead of panicing
- Increase the size of the containing type for bitfields that extend past the end of their nominal containig type.
- Add more plausibility checks to
--check
Version v2.7.0
- support C++ references in the DWARF debug data reader
- update to a2lfile 3.0.0
- Comments are now preserved in some cases. Specifically, any comment that occurs in a position where a block is permitted
can be can be represented in the data, and is written to the output file. Sorting a2l files erases comments. - The values of BIT_MASK and error mask are u64 instead of u32, and parsing no longer fails for values that don't fit in u32.
- Allow multiple CALIBRATION_HANDLEs inside of CALIBRATION_METHOD (by Rainer Zaiser)
- Comments are now preserved in some cases. Specifically, any comment that occurs in a position where a block is permitted
Version v2.6.0
- handle offset values other than zero in SYMBOL_LINK
Offset values are still restricted to only point to the beginning of values, and cannot refer to e.g. the second byte of a 32-bit value. - update to a2lfile 2.5.0, which brings some bug fixes:
- improvements for the merge function:
- TYPEDEF_CHARACTERISTIC may reference a MEASUREMENT, but this reference was not updated during merges
- USER_RIGHTS can no longer get duplicate user entries as a result of the merge
- all items are merged in the order in which they appear in the merge file. Previously they were merged in reverse order
- During checking, accept referneces from an AXIS_PRS_REF or CURVE_AXIS_REF of a TYPEDEF_CHARACTERISTIC
to a structure component of the containing structure using the notation THIS.component_name.
- improvements for the merge function: