From 789701194f4dcd57c9bb82b1ae0aa262ea9fc389 Mon Sep 17 00:00:00 2001 From: patacongo Date: Fri, 18 Dec 2009 16:48:14 +0000 Subject: Update to use stdint/stdbool.h git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@2385 42af7a65-404d-4744-a932-0658087f49c3 --- misc/pascal/libpoff/pfwlineno.c | 329 ++++++++++++++++++++-------------------- 1 file changed, 165 insertions(+), 164 deletions(-) (limited to 'misc/pascal/libpoff/pfwlineno.c') diff --git a/misc/pascal/libpoff/pfwlineno.c b/misc/pascal/libpoff/pfwlineno.c index f7f4b9954..ca72bc156 100644 --- a/misc/pascal/libpoff/pfwlineno.c +++ b/misc/pascal/libpoff/pfwlineno.c @@ -1,164 +1,165 @@ -/********************************************************************** - * pfwlineno.c - * Write line number data to a POFF file - * - * Copyright (C) 2008 Gregory Nutt. All rights reserved. - * Author: Gregory Nutt - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * 3. Neither the name NuttX nor the names of its contributors may be - * used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS - * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE - * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS - * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED - * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN - * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - **********************************************************************/ - -/********************************************************************** - * Included Files - **********************************************************************/ - -#include -#include -#include -#include - -#include "keywords.h" /* Standard types */ -#include "pedefs.h" /* error code definitions */ - -#include "perr.h" /* error() */ -#include "pofflib.h" /* POFF library interface */ -#include "pfprivate.h" /* POFF private definitions */ - -/********************************************************************** - * Definitions - **********************************************************************/ - -/********************************************************************** - * Global Variables - **********************************************************************/ - -/********************************************************************** - * Private Variables - **********************************************************************/ - -/*********************************************************************** - * Private Function Prototypes - ***********************************************************************/ - -/*********************************************************************** - * Private Functions - ***********************************************************************/ - -static void poffCheckLineNumberAllocation(poffInfo_t *poffInfo) -{ - /* Check if we have allocated a line number buffer yet */ - - if (!poffInfo->lineNumberTable) - { - /* No, allocate it now */ - - poffInfo->lineNumberTable = (ubyte*) - malloc(INITIAL_LINENUMBER_TABLE_SIZE); - - if (!poffInfo->lineNumberTable) - { - fatal(eNOMEMORY); - } - - poffInfo->lineNumberSection.sh_size = 0; - poffInfo->lineNumberTableAlloc = INITIAL_LINENUMBER_TABLE_SIZE; - } -} - -/***********************************************************************/ - -static void poffCheckLineNumberReallocation(poffInfo_t *poffInfo) -{ - if (poffInfo->lineNumberSection.sh_size + sizeof(poffLineNumber_t) > - poffInfo->lineNumberTableAlloc) - { - uint32 newAlloc = - poffInfo->lineNumberTableAlloc + - LINENUMBER_TABLE_INCREMENT; - - void *tmp; - - /* Reallocate the line number buffer */ - - tmp = realloc(poffInfo->lineNumberTable, newAlloc); - if (!tmp) - { - fatal(eNOMEMORY); - } - - /* And set the new size */ - - poffInfo->lineNumberTableAlloc = newAlloc; - poffInfo->lineNumberTable = (ubyte*)tmp; - } -} - -/*********************************************************************** - * Public Functions - ***********************************************************************/ - -/***********************************************************************/ -/* Add a line number to the line number table. Returns index value - * associated with the line number entry in the line number table. - */ - -uint32 poffAddLineNumber(poffHandle_t handle, - uint16 lineNumber, uint16 fileNumber, - uint32 progSectionDataOffset) -{ - poffInfo_t *poffInfo = (poffInfo_t*)handle; - poffLineNumber_t *pln; - uint32 index; - - /* Verify that the line number table has been allocated */ - - poffCheckLineNumberAllocation(poffInfo); - - /* Verify that the line number table is large enough to hold - * information about another line. - */ - - poffCheckLineNumberReallocation(poffInfo); - - /* Save the line number information in the line number table */ - - index = poffInfo->lineNumberSection.sh_size; - pln = (poffLineNumber_t*)&poffInfo->lineNumberTable[index]; - - pln->ln_lineno = lineNumber; - pln->ln_fileno = fileNumber; - pln->ln_poffset = progSectionDataOffset; - - /* Set the new size of the line number table */ - - poffInfo->lineNumberSection.sh_size += sizeof(poffLineNumber_t); - return index; -} - -/***********************************************************************/ +/********************************************************************** + * pfwlineno.c + * Write line number data to a POFF file + * + * Copyright (C) 2008-2009 Gregory Nutt. All rights reserved. + * Author: Gregory Nutt + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * 3. Neither the name NuttX nor the names of its contributors may be + * used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS + * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + **********************************************************************/ + +/********************************************************************** + * Included Files + **********************************************************************/ + +#include +#include +#include +#include +#include + +#include "keywords.h" /* Standard types */ +#include "pedefs.h" /* error code definitions */ + +#include "perr.h" /* error() */ +#include "pofflib.h" /* POFF library interface */ +#include "pfprivate.h" /* POFF private definitions */ + +/********************************************************************** + * Definitions + **********************************************************************/ + +/********************************************************************** + * Global Variables + **********************************************************************/ + +/********************************************************************** + * Private Variables + **********************************************************************/ + +/*********************************************************************** + * Private Function Prototypes + ***********************************************************************/ + +/*********************************************************************** + * Private Functions + ***********************************************************************/ + +static void poffCheckLineNumberAllocation(poffInfo_t *poffInfo) +{ + /* Check if we have allocated a line number buffer yet */ + + if (!poffInfo->lineNumberTable) + { + /* No, allocate it now */ + + poffInfo->lineNumberTable = (uint8_t*) + malloc(INITIAL_LINENUMBER_TABLE_SIZE); + + if (!poffInfo->lineNumberTable) + { + fatal(eNOMEMORY); + } + + poffInfo->lineNumberSection.sh_size = 0; + poffInfo->lineNumberTableAlloc = INITIAL_LINENUMBER_TABLE_SIZE; + } +} + +/***********************************************************************/ + +static void poffCheckLineNumberReallocation(poffInfo_t *poffInfo) +{ + if (poffInfo->lineNumberSection.sh_size + sizeof(poffLineNumber_t) > + poffInfo->lineNumberTableAlloc) + { + uint32_t newAlloc = + poffInfo->lineNumberTableAlloc + + LINENUMBER_TABLE_INCREMENT; + + void *tmp; + + /* Reallocate the line number buffer */ + + tmp = realloc(poffInfo->lineNumberTable, newAlloc); + if (!tmp) + { + fatal(eNOMEMORY); + } + + /* And set the new size */ + + poffInfo->lineNumberTableAlloc = newAlloc; + poffInfo->lineNumberTable = (uint8_t*)tmp; + } +} + +/*********************************************************************** + * Public Functions + ***********************************************************************/ + +/***********************************************************************/ +/* Add a line number to the line number table. Returns index value + * associated with the line number entry in the line number table. + */ + +uint32_t poffAddLineNumber(poffHandle_t handle, + uint16_t lineNumber, uint16_t fileNumber, + uint32_t progSectionDataOffset) +{ + poffInfo_t *poffInfo = (poffInfo_t*)handle; + poffLineNumber_t *pln; + uint32_t index; + + /* Verify that the line number table has been allocated */ + + poffCheckLineNumberAllocation(poffInfo); + + /* Verify that the line number table is large enough to hold + * information about another line. + */ + + poffCheckLineNumberReallocation(poffInfo); + + /* Save the line number information in the line number table */ + + index = poffInfo->lineNumberSection.sh_size; + pln = (poffLineNumber_t*)&poffInfo->lineNumberTable[index]; + + pln->ln_lineno = lineNumber; + pln->ln_fileno = fileNumber; + pln->ln_poffset = progSectionDataOffset; + + /* Set the new size of the line number table */ + + poffInfo->lineNumberSection.sh_size += sizeof(poffLineNumber_t); + return index; +} + +/***********************************************************************/ -- cgit v1.2.3