mirror of https://github.com/YosysHQ/abc.git
Merge pull request #10 from YosysHQ/yosys-experimental
Integrate write_cex and cexinfo and some fixes in write_cex output code
This commit is contained in:
commit
57ef73b205
5
Makefile
5
Makefile
|
|
@ -206,7 +206,10 @@ depend: $(DEP)
|
|||
|
||||
clean:
|
||||
@echo "$(MSG_PREFIX)\`\` Cleaning up..."
|
||||
$(VERBOSE)rm -rvf $(PROG) lib$(PROG).a $(OBJ) $(GARBAGE) $(OBJ:.o=.d)
|
||||
$(VERBOSE)rm -rvf $(PROG) lib$(PROG).a
|
||||
$(VERBOSE)rm -rvf $(OBJ)
|
||||
$(VERBOSE)rm -rvf $(GARBAGE)
|
||||
$(VERBOSE)rm -rvf $(OBJ:.o=.d)
|
||||
|
||||
tags:
|
||||
etags `find . -type f -regex '.*\.\(c\|h\)'`
|
||||
|
|
|
|||
|
|
@ -363,7 +363,11 @@ void Abc_ShowFile( char * FileNameDot )
|
|||
|
||||
// generate the PostScript file using DOT
|
||||
sprintf( CommandDot, "%s -Tps -o %s %s", pDotName, FileNamePs, FileNameDot );
|
||||
#if defined(__wasm)
|
||||
RetValue = -1;
|
||||
#else
|
||||
RetValue = system( CommandDot );
|
||||
#endif
|
||||
if ( RetValue == -1 )
|
||||
{
|
||||
fprintf( stdout, "Command \"%s\" did not succeed.\n", CommandDot );
|
||||
|
|
@ -401,7 +405,11 @@ void Abc_ShowFile( char * FileNameDot )
|
|||
char CommandPs[1000];
|
||||
unlink( FileNameDot );
|
||||
sprintf( CommandPs, "%s %s &", pGsNameUnix, FileNamePs );
|
||||
#if defined(__wasm)
|
||||
if ( 1 )
|
||||
#else
|
||||
if ( system( CommandPs ) == -1 )
|
||||
#endif
|
||||
{
|
||||
fprintf( stdout, "Cannot execute \"%s\".\n", CommandPs );
|
||||
return;
|
||||
|
|
|
|||
|
|
@ -2175,7 +2175,11 @@ void Gia_ManGnuplotShow( char * pPlotFileName )
|
|||
{
|
||||
char Command[1000];
|
||||
sprintf( Command, "%s %s ", pProgNameGnuplot, pPlotFileName );
|
||||
#if defined(__wasm)
|
||||
if ( 1 )
|
||||
#else
|
||||
if ( system( Command ) == -1 )
|
||||
#endif
|
||||
{
|
||||
fprintf( stdout, "Cannot execute \"%s\".\n", Command );
|
||||
return;
|
||||
|
|
|
|||
|
|
@ -52,6 +52,9 @@ int cmdCheckShellEscape( Abc_Frame_t * pAbc, int argc, char ** argv)
|
|||
int RetValue;
|
||||
if (argv[0][0] == '!')
|
||||
{
|
||||
#if defined(__wasm)
|
||||
RetValue = -1;
|
||||
#else
|
||||
const int size = 4096;
|
||||
int i;
|
||||
char * buffer = ABC_ALLOC(char, 10000);
|
||||
|
|
@ -70,7 +73,7 @@ int cmdCheckShellEscape( Abc_Frame_t * pAbc, int argc, char ** argv)
|
|||
// the parts, we lose information. So a command like
|
||||
// `!ls "file name"` will be sent to the system as
|
||||
// `ls file name` which is a BUG
|
||||
|
||||
#endif
|
||||
return 1;
|
||||
}
|
||||
else
|
||||
|
|
|
|||
|
|
@ -49,7 +49,9 @@ SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
|
|||
#include <sys/times.h>
|
||||
#include <sys/resource.h>
|
||||
#include <unistd.h>
|
||||
#if !defined(__wasm)
|
||||
#include <signal.h>
|
||||
#endif
|
||||
#include <stdlib.h>
|
||||
#endif
|
||||
|
||||
|
|
@ -132,7 +134,7 @@ int Abc_RealMain( int argc, char * argv[] )
|
|||
break;
|
||||
|
||||
case 'm': {
|
||||
#if !defined(WIN32) && !defined(ABC_NO_RLIMIT)
|
||||
#if !defined(WIN32) && !defined(__wasm)
|
||||
int maxMb = atoi(globalUtilOptarg);
|
||||
printf("Limiting memory use to %d MB\n", maxMb);
|
||||
struct rlimit limit = {
|
||||
|
|
@ -144,7 +146,7 @@ int Abc_RealMain( int argc, char * argv[] )
|
|||
break;
|
||||
}
|
||||
case 'l': {
|
||||
#if !defined(WIN32) && !defined(ABC_NO_RLIMIT)
|
||||
#if !defined(WIN32) && !defined(__wasm)
|
||||
rlim_t maxTime = atoi(globalUtilOptarg);
|
||||
printf("Limiting time to %d seconds\n", (int)maxTime);
|
||||
struct rlimit limit = {
|
||||
|
|
|
|||
|
|
@ -25,6 +25,23 @@
|
|||
#include <fcntl.h>
|
||||
#include <sys/stat.h>
|
||||
|
||||
// Handle legacy macros
|
||||
#if !defined(S_IREAD)
|
||||
#if defined(S_IRUSR)
|
||||
#define S_IREAD S_IRUSR
|
||||
#else
|
||||
#error S_IREAD is undefined
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#if !defined(S_IWRITE)
|
||||
#if defined(S_IWUSR)
|
||||
#define S_IWRITE S_IWUSR
|
||||
#else
|
||||
#error S_IWRITE is undefined
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#if defined(_MSC_VER) || defined(__MINGW32__)
|
||||
#include <windows.h>
|
||||
#include <process.h>
|
||||
|
|
@ -102,6 +119,17 @@ int tmpFile(const char* prefix, const char* suffix, char** out_name)
|
|||
}
|
||||
assert(0); // -- could not open temporary file
|
||||
return 0;
|
||||
#elif defined(__wasm)
|
||||
static int seq = 0; // no risk of collision since we're in a sandbox
|
||||
int fd;
|
||||
*out_name = (char*)malloc(strlen(prefix) + strlen(suffix) + 9);
|
||||
sprintf(*out_name, "%s%08d%s", prefix, seq++, suffix);
|
||||
fd = open(*out_name, O_CREAT | O_EXCL | O_RDWR, S_IREAD | S_IWRITE);
|
||||
if (fd == -1){
|
||||
free(*out_name);
|
||||
*out_name = NULL;
|
||||
}
|
||||
return fd;
|
||||
#else
|
||||
int fd;
|
||||
*out_name = (char*)malloc(strlen(prefix) + strlen(suffix) + 7);
|
||||
|
|
|
|||
|
|
@ -43,7 +43,11 @@ ABC_NAMESPACE_IMPL_START
|
|||
|
||||
int Util_SignalSystem(const char* cmd)
|
||||
{
|
||||
#if defined(__wasm)
|
||||
return -1;
|
||||
#else
|
||||
return system(cmd);
|
||||
#endif
|
||||
}
|
||||
|
||||
int tmpFile(const char* prefix, const char* suffix, char** out_name);
|
||||
|
|
|
|||
|
|
@ -97,7 +97,11 @@ void RegionAllocator<T>::capacity(uint32_t min_cap)
|
|||
cap += delta;
|
||||
|
||||
if (cap <= prev_cap)
|
||||
#ifdef __wasm
|
||||
abort();
|
||||
#else
|
||||
throw OutOfMemoryException();
|
||||
#endif
|
||||
}
|
||||
// printf(" .. (%p) cap = %u\n", this, cap);
|
||||
|
||||
|
|
@ -119,7 +123,11 @@ RegionAllocator<T>::alloc(int size)
|
|||
|
||||
// Handle overflow:
|
||||
if (sz < prev_sz)
|
||||
#ifdef __wasm
|
||||
abort();
|
||||
#else
|
||||
throw OutOfMemoryException();
|
||||
#endif
|
||||
|
||||
return prev_sz;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -97,7 +97,11 @@ void vec<T>::capacity(int min_cap) {
|
|||
if (cap >= min_cap) return;
|
||||
int add = imax((min_cap - cap + 1) & ~1, ((cap >> 1) + 2) & ~1); // NOTE: grow by approximately 3/2
|
||||
if (add > INT_MAX - cap || (((data = (T*)::realloc(data, (cap += add) * sizeof(T))) == NULL) && errno == ENOMEM))
|
||||
#ifdef __wasm
|
||||
abort();
|
||||
#else
|
||||
throw OutOfMemoryException();
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -34,7 +34,11 @@ static inline void* xrealloc(void *ptr, size_t size)
|
|||
{
|
||||
void* mem = realloc(ptr, size);
|
||||
if (mem == NULL && errno == ENOMEM){
|
||||
#ifdef __wasm
|
||||
abort();
|
||||
#else
|
||||
throw OutOfMemoryException();
|
||||
#endif
|
||||
}else
|
||||
return mem;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -100,7 +100,11 @@ void RegionAllocator<T>::capacity(uint32_t min_cap)
|
|||
cap += delta;
|
||||
|
||||
if (cap <= prev_cap)
|
||||
#ifdef __wasm
|
||||
abort();
|
||||
#else
|
||||
throw OutOfMemoryException();
|
||||
#endif
|
||||
}
|
||||
//printf(" .. (%p) cap = %u\n", this, cap);
|
||||
|
||||
|
|
@ -122,7 +126,11 @@ RegionAllocator<T>::alloc(int size)
|
|||
|
||||
// Handle overflow:
|
||||
if (sz < prev_sz)
|
||||
#ifdef __wasm
|
||||
abort();
|
||||
#else
|
||||
throw OutOfMemoryException();
|
||||
#endif
|
||||
|
||||
return prev_sz;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -28,20 +28,18 @@ OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWA
|
|||
# include <sys/int_fmtio.h>
|
||||
# include <sys/int_limits.h>
|
||||
|
||||
#elif _WIN32
|
||||
|
||||
# include "pstdint.h"
|
||||
|
||||
#else
|
||||
|
||||
#define __STDC_LIMIT_MACROS
|
||||
# include "pstdint.h"
|
||||
//# include <inttypes.h>
|
||||
# define __STDC_LIMIT_MACROS
|
||||
# include <limits.h>
|
||||
# include <inttypes.h>
|
||||
|
||||
#endif
|
||||
|
||||
#include <limits.h>
|
||||
|
||||
#ifndef PRIu64
|
||||
#define PRIu64 "lu"
|
||||
#define PRIi64 "ld"
|
||||
#endif
|
||||
//=================================================================================================
|
||||
|
||||
#include <misc/util/abc_namespaces.h>
|
||||
|
|
|
|||
|
|
@ -100,7 +100,11 @@ void vec<T>::capacity(int min_cap) {
|
|||
if (cap >= min_cap) return;
|
||||
int add = imax((min_cap - cap + 1) & ~1, ((cap >> 1) + 2) & ~1); // NOTE: grow by approximately 3/2
|
||||
if (add > INT_MAX - cap || (((data = (T*)::realloc(data, (cap += add) * sizeof(T))) == NULL) && errno == ENOMEM))
|
||||
#ifdef __wasm
|
||||
abort();
|
||||
#else
|
||||
throw OutOfMemoryException();
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -39,7 +39,11 @@ static inline void* xrealloc(void *ptr, size_t size)
|
|||
{
|
||||
void* mem = realloc(ptr, size);
|
||||
if (mem == NULL && errno == ENOMEM){
|
||||
#ifdef __wasm
|
||||
abort();
|
||||
#else
|
||||
throw OutOfMemoryException();
|
||||
#endif
|
||||
}else {
|
||||
return mem;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -100,7 +100,11 @@ void RegionAllocator<T>::capacity(uint32_t min_cap)
|
|||
cap += delta;
|
||||
|
||||
if (cap <= prev_cap)
|
||||
#ifdef __wasm
|
||||
abort();
|
||||
#else
|
||||
throw OutOfMemoryException();
|
||||
#endif
|
||||
}
|
||||
//printf(" .. (%p) cap = %u\n", this, cap);
|
||||
|
||||
|
|
@ -122,7 +126,11 @@ RegionAllocator<T>::alloc(int size)
|
|||
|
||||
// Handle overflow:
|
||||
if (sz < prev_sz)
|
||||
#ifdef __wasm
|
||||
abort();
|
||||
#else
|
||||
throw OutOfMemoryException();
|
||||
#endif
|
||||
|
||||
return prev_sz;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -28,20 +28,18 @@ OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWA
|
|||
# include <sys/int_fmtio.h>
|
||||
# include <sys/int_limits.h>
|
||||
|
||||
#elif _WIN32
|
||||
|
||||
# include "pstdint.h"
|
||||
|
||||
#else
|
||||
|
||||
#define __STDC_LIMIT_MACROS
|
||||
# include "pstdint.h"
|
||||
//# include <inttypes.h>
|
||||
# define __STDC_LIMIT_MACROS
|
||||
# include <limits.h>
|
||||
# include <inttypes.h>
|
||||
|
||||
#endif
|
||||
|
||||
#include <limits.h>
|
||||
|
||||
#ifndef PRIu64
|
||||
#define PRIu64 "lu"
|
||||
#define PRIi64 "ld"
|
||||
#endif
|
||||
//=================================================================================================
|
||||
|
||||
#include <misc/util/abc_namespaces.h>
|
||||
|
|
|
|||
|
|
@ -102,14 +102,22 @@ void vec<T>::capacity(int min_cap) {
|
|||
if (cap >= min_cap) return;
|
||||
int add = imax((min_cap - cap + 1) & ~1, ((cap >> 1) + 2) & ~1); // NOTE: grow by approximately 3/2
|
||||
if (add > INT_MAX - cap || (((data = (T*)::realloc(data, (cap += add) * sizeof(T))) == NULL) && errno == ENOMEM))
|
||||
#ifdef __wasm
|
||||
abort();
|
||||
#else
|
||||
throw OutOfMemoryException();
|
||||
#endif
|
||||
}
|
||||
|
||||
template<class T>
|
||||
void vec<T>::prelocate(int ext_cap) {
|
||||
if (cap >= ext_cap) return;
|
||||
if (ext_cap > INT_MAX || (((data = (T*)::realloc(data, ext_cap * sizeof(T))) == NULL) && errno == ENOMEM))
|
||||
#ifdef __wasm
|
||||
abort();
|
||||
#else
|
||||
throw OutOfMemoryException();
|
||||
#endif
|
||||
cap = ext_cap;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -39,7 +39,11 @@ static inline void* xrealloc(void *ptr, size_t size)
|
|||
{
|
||||
void* mem = realloc(ptr, size);
|
||||
if (mem == NULL && errno == ENOMEM){
|
||||
#ifdef __wasm
|
||||
abort();
|
||||
#else
|
||||
throw OutOfMemoryException();
|
||||
#endif
|
||||
}else {
|
||||
return mem;
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue